@netique/overleaf-mcp 0.3.3 → 0.3.5

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,123 @@
1
+ // Shared pipeline for `edit_file` and `find_and_replace`. The two tools differ
2
+ // only in how they compute the OT op list (one diffs `new_content` against the
3
+ // cached baseline; the other locates `old_string`, validates uniqueness, and
4
+ // builds an op pair). Everything around that — entity resolution, baseline
5
+ // freshness checks, OT submit, post-edit verify, cache sync, response notes —
6
+ // is identical and lives here.
7
+ import { applyOtUpdate, getActiveSocket } from "../api/socket.js";
8
+ import { getIdentity } from "../session/identity.js";
9
+ import { ensureDocLoaded, updateDoc } from "../session/docCache.js";
10
+ import { findByPath, getActiveProject } from "../session/activeProject.js";
11
+ import { generateIdSeed, resolveTracking } from "./trackedChanges.js";
12
+ import { checkBaseline, verifyEdit } from "./verify.js";
13
+ export function resolveDocForEdit(path) {
14
+ const ap = getActiveProject();
15
+ if (!ap) {
16
+ return { ok: false, response: { content: [{ type: "text", text: "No project is open. Call open_project first." }], isError: true } };
17
+ }
18
+ const resolved = path ?? ap.rootDocPath;
19
+ if (!resolved) {
20
+ return { ok: false, response: { content: [{ type: "text", text: "No path provided and the project has no configured root doc. Pass a `path`." }], isError: true } };
21
+ }
22
+ const entity = findByPath(resolved);
23
+ if (!entity) {
24
+ return {
25
+ ok: false,
26
+ response: { content: [{ type: "text", text: `Path not found in project: '${resolved}'. Use list_files to inspect available paths.` }], isError: true },
27
+ };
28
+ }
29
+ if (entity.kind !== "doc") {
30
+ return {
31
+ ok: false,
32
+ response: { content: [{ type: "text", text: `'${resolved}' is a ${entity.kind}, not an editable doc.` }], isError: true },
33
+ };
34
+ }
35
+ return { ok: true, doc: { ap, entity } };
36
+ }
37
+ export async function prepareBaseline(entity, opts) {
38
+ let cached = await ensureDocLoaded(entity.id);
39
+ if (opts.expected_version !== undefined && cached.version !== opts.expected_version) {
40
+ return {
41
+ ok: false,
42
+ response: {
43
+ content: [{ type: "text", text: `Version mismatch: cached version is ${cached.version}, you provided ${opts.expected_version}. Re-read the file and retry.` }],
44
+ isError: true,
45
+ },
46
+ };
47
+ }
48
+ if (opts.strict_version) {
49
+ const bc = await checkBaseline(entity.id, cached.version);
50
+ updateDoc(entity.id, bc.serverText, bc.serverVersion);
51
+ if (bc.stale) {
52
+ return {
53
+ ok: false,
54
+ response: {
55
+ content: [{ type: "text", text: `Stale baseline (strict_version): cached v${cached.version}, server is at v${bc.serverVersion}. The doc was modified by another writer since you last read it. Re-call read_file before retrying.` }],
56
+ isError: true,
57
+ structuredContent: {
58
+ path: entity.path,
59
+ doc_id: entity.id,
60
+ stale_baseline: true,
61
+ cached_version: cached.version,
62
+ server_version: bc.serverVersion,
63
+ },
64
+ },
65
+ };
66
+ }
67
+ cached = { docId: entity.id, text: bc.serverText, version: bc.serverVersion };
68
+ }
69
+ return { ok: true, cached };
70
+ }
71
+ // Build + emit the OT update, run post-edit verification, sync the cache to
72
+ // the server's actual state, and compose the shared response-text notes.
73
+ // Tool-specific work (per-tool structuredContent shape, per-tool prose) is
74
+ // the caller's responsibility.
75
+ export async function submitAndVerify(opts) {
76
+ const identity = await getIdentity();
77
+ const sock = getActiveSocket();
78
+ const { shouldTrack, serverWillTrack, trackOverridden } = resolveTracking(opts.track, opts.ap.trackChangesOnForMe);
79
+ const meta = {
80
+ source: sock?.publicId ?? "overleaf-mcp",
81
+ ts: Date.now(),
82
+ user_id: identity.userId,
83
+ };
84
+ if (shouldTrack)
85
+ meta.tc = generateIdSeed();
86
+ const update = { doc: opts.entity.id, op: opts.ops, v: opts.cached.version, meta };
87
+ await applyOtUpdate(opts.entity.id, update);
88
+ const optimisticVersion = opts.cached.version + 1;
89
+ const trackingNote = serverWillTrack
90
+ ? (trackOverridden
91
+ ? "Submitted as a tracked change — `track:\"off\"` was overridden because the project has track_changes_on_for_me. The edit lands as a pending suggestion in Overleaf's Review panel."
92
+ : "Submitted as tracked changes — should appear as a pending suggestion in Overleaf's Review panel.")
93
+ : "Submitted as a direct edit (no tracking).";
94
+ let v;
95
+ let verifyError;
96
+ try {
97
+ v = await verifyEdit(opts.entity.id, opts.preEditText, opts.expectedText, optimisticVersion);
98
+ }
99
+ catch (e) {
100
+ verifyError = e instanceof Error ? e.message : String(e);
101
+ }
102
+ // Sync cache to the server's actual state — even on verify failure we want
103
+ // the next edit to diff against reality rather than our optimistic prediction.
104
+ if (v)
105
+ updateDoc(opts.entity.id, v.serverText, v.serverVersion);
106
+ else
107
+ updateDoc(opts.entity.id, opts.expectedText, optimisticVersion);
108
+ const silentNoOp = Boolean(v?.silentNoOp);
109
+ const versionAfter = v ? v.serverVersion : optimisticVersion;
110
+ const concurrentNote = v?.hadConcurrentWritesAfter
111
+ ? ` Note: server is at v${v.serverVersion} (> optimistic v${optimisticVersion}) — another writer landed updates after this edit; your op is in but the doc has moved on.`
112
+ : !v?.matchesExpected && v
113
+ ? ` Note: server text doesn't byte-match the predicted post-edit content (cache synced to actual server state at v${v.serverVersion}); the edit landed but may have been OT-transformed.`
114
+ : "";
115
+ const verifySkippedNote = verifyError ? ` (post-edit verification skipped: ${verifyError})` : "";
116
+ return {
117
+ shouldTrack, serverWillTrack, trackOverridden,
118
+ optimisticVersion, versionAfter,
119
+ trackingNote, concurrentNote, verifySkippedNote,
120
+ v, verifyError, silentNoOp,
121
+ };
122
+ }
123
+ //# sourceMappingURL=editPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editPipeline.js","sourceRoot":"","sources":["../../src/ot/editPipeline.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,+BAA+B;AAE/B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAsB,MAAM,6BAA6B,CAAC;AAG/F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAkB,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAuB,MAAM,aAAa,CAAC;AAU7E,MAAM,UAAU,iBAAiB,CAC/B,IAAwB;IAExB,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;IACvI,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6EAA6E,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;IACtK,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,QAAQ,+CAA+C,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;SACvJ,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,QAAQ,UAAU,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;SAC1H,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;AAC3C,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAkB,EAClB,IAAkB;IAElB,IAAI,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE;gBACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,MAAM,CAAC,OAAO,kBAAkB,IAAI,CAAC,gBAAgB,+BAA+B,EAAE,CAAC;gBAC9J,OAAO,EAAE,IAAI;aACd;SACF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1D,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE;oBACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4CAA4C,MAAM,CAAC,OAAO,mBAAmB,EAAE,CAAC,aAAa,qGAAqG,EAAE,CAAC;oBACrO,OAAO,EAAE,IAAI;oBACb,iBAAiB,EAAE;wBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,MAAM,EAAE,MAAM,CAAC,EAAE;wBACjB,cAAc,EAAE,IAAI;wBACpB,cAAc,EAAE,MAAM,CAAC,OAAO;wBAC9B,cAAc,EAAE,EAAE,CAAC,aAAa;qBACjC;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AA0BD,4EAA4E;AAC5E,yEAAyE;AACzE,2EAA2E;AAC3E,+BAA+B;AAC/B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAgB;IACpD,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACnH,MAAM,IAAI,GAAkC;QAC1C,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,cAAc;QACxC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;QACd,OAAO,EAAE,QAAQ,CAAC,MAAM;KACzB,CAAC;IACF,IAAI,WAAW;QAAE,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAa,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7F,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,eAAe;QAClC,CAAC,CAAC,CAAC,eAAe;YACd,CAAC,CAAC,oLAAoL;YACtL,CAAC,CAAC,kGAAkG,CAAC;QACzG,CAAC,CAAC,2CAA2C,CAAC;IAEhD,IAAI,CAA6B,CAAC;IAClC,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACH,CAAC,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,2EAA2E;IAC3E,+EAA+E;IAC/E,IAAI,CAAC;QAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;;QAC3D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAErE,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC7D,MAAM,cAAc,GAAG,CAAC,EAAE,wBAAwB;QAChD,CAAC,CAAC,wBAAwB,CAAC,CAAC,aAAa,mBAAmB,iBAAiB,4FAA4F;QACzK,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,IAAI,CAAC;YACxB,CAAC,CAAC,kHAAkH,CAAC,CAAC,aAAa,sDAAsD;YACzL,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,qCAAqC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjG,OAAO;QACL,WAAW,EAAE,eAAe,EAAE,eAAe;QAC7C,iBAAiB,EAAE,YAAY;QAC/B,YAAY,EAAE,cAAc,EAAE,iBAAiB;QAC/C,CAAC,EAAE,WAAW,EAAE,UAAU;KAC3B,CAAC;AACJ,CAAC"}
@@ -16,4 +16,17 @@ export function generateIdSeed() {
16
16
  const ts = hexPad(Math.floor(Date.now() / 1000), 8);
17
17
  return ts + machine + pid;
18
18
  }
19
+ export const TRACK_MODES = ["auto", "on", "off"];
20
+ // Resolve what the SERVER will do given the caller's `track` request and the
21
+ // project's per-user setting. `serverWillTrack` is what we report in `tracked`;
22
+ // `trackOverridden` flags the specific case where the caller said "off" but
23
+ // the project's `track_changes_on_for_me: true` forced tracking anyway.
24
+ export function resolveTracking(track, trackChangesOnForMe) {
25
+ const shouldTrack = track === "on" ? true : track === "off" ? false : trackChangesOnForMe;
26
+ return {
27
+ shouldTrack,
28
+ serverWillTrack: shouldTrack || trackChangesOnForMe,
29
+ trackOverridden: track === "off" && trackChangesOnForMe,
30
+ };
31
+ }
19
32
  //# sourceMappingURL=trackedChanges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trackedChanges.js","sourceRoot":"","sources":["../../src/ot/trackedChanges.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,0DAA0D;AAC1D,oFAAoF;AACpF,+EAA+E;AAC/E,+EAA+E;AAC/E,yDAAyD;AAEzD,SAAS,MAAM,CAAC,CAAS,EAAE,KAAa;IACtC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"trackedChanges.js","sourceRoot":"","sources":["../../src/ot/trackedChanges.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,0DAA0D;AAC1D,oFAAoF;AACpF,+EAA+E;AAC/E,+EAA+E;AAC/E,yDAAyD;AAEzD,SAAS,MAAM,CAAC,CAAS,EAAE,KAAa;IACtC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AAG1D,6EAA6E;AAC7E,gFAAgF;AAChF,4EAA4E;AAC5E,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAC7B,KAAgB,EAChB,mBAA4B;IAE5B,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC1F,OAAO;QACL,WAAW;QACX,eAAe,EAAE,WAAW,IAAI,mBAAmB;QACnD,eAAe,EAAE,KAAK,KAAK,KAAK,IAAI,mBAAmB;KACxD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ // Concurrency safeguards for OT edits. Both helpers re-`joinDoc` the doc and
2
+ // hand the fresh state back to the caller; cache syncing is the caller's job
3
+ // so that on failure we don't write potentially-wrong state.
4
+ //
5
+ // Why these exist: the in-process docCache makes each MCP server instance
6
+ // believe it knows the current version, but parallel agents and any open
7
+ // Overleaf web editor bump the server's version independently. When our
8
+ // `applyOtUpdate` arrives with a stale `v`, the server silently OT-transforms
9
+ // our ops against the missed updates — sometimes producing a no-op while
10
+ // still acking success. Without verification we'd happily report
11
+ // `replacements: 1` for an edit that had zero visible effect.
12
+ import { joinDoc } from "../api/socket.js";
13
+ // Re-fetch and compare to the cached version. Use before `applyOtUpdate` when
14
+ // `strict_version: true` is set so we fail fast on a stale baseline instead
15
+ // of letting the server transform our ops in surprising ways.
16
+ export async function checkBaseline(docId, cachedVersion) {
17
+ const fresh = await joinDoc(docId);
18
+ return {
19
+ stale: fresh.version !== cachedVersion,
20
+ serverVersion: fresh.version,
21
+ serverText: fresh.docLines.join("\n"),
22
+ };
23
+ }
24
+ // Re-fetch after `applyOtUpdate` and report whether the edit landed as we
25
+ // predicted. The caller decides whether to fail loudly or warn based on the
26
+ // flags.
27
+ export async function verifyEdit(docId, preEditText, expectedText, expectedVersion) {
28
+ const fresh = await joinDoc(docId);
29
+ const serverText = fresh.docLines.join("\n");
30
+ return {
31
+ serverVersion: fresh.version,
32
+ serverText,
33
+ silentNoOp: serverText === preEditText,
34
+ matchesExpected: serverText === expectedText,
35
+ hadConcurrentWritesAfter: fresh.version > expectedVersion,
36
+ };
37
+ }
38
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/ot/verify.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,6DAA6D;AAC7D,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,8EAA8E;AAC9E,yEAAyE;AACzE,iEAAiE;AACjE,8DAA8D;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQ3C,8EAA8E;AAC9E,4EAA4E;AAC5E,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,aAAqB;IACtE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,OAAO,KAAK,aAAa;QACtC,aAAa,EAAE,KAAK,CAAC,OAAO;QAC5B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KACtC,CAAC;AACJ,CAAC;AAiBD,0EAA0E;AAC1E,4EAA4E;AAC5E,SAAS;AACT,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,eAAuB;IAEvB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO;QACL,aAAa,EAAE,KAAK,CAAC,OAAO;QAC5B,UAAU;QACV,UAAU,EAAE,UAAU,KAAK,WAAW;QACtC,eAAe,EAAE,UAAU,KAAK,YAAY;QAC5C,wBAAwB,EAAE,KAAK,CAAC,OAAO,GAAG,eAAe;KAC1D,CAAC;AACJ,CAAC"}
@@ -45,4 +45,11 @@ export function findByPath(path) {
45
45
  const normalized = path.replace(/^\/+/, "");
46
46
  return active.entities.find((e) => e.path === normalized);
47
47
  }
48
+ export function docPathById(ap) {
49
+ const m = new Map();
50
+ for (const e of ap.entities)
51
+ if (e.kind === "doc")
52
+ m.set(e.id, e.path);
53
+ return m;
54
+ }
48
55
  //# sourceMappingURL=activeProject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activeProject.js","sourceRoot":"","sources":["../../src/session/activeProject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAuC,MAAM,wBAAwB,CAAC;AAEnH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa9C,IAAI,MAAM,GAAyB,IAAI,CAAC;AAExC,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,IAAI,MAAM;QAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,SAAiB;IAC1C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,aAAa,EAAE,CAAC;IAChB,iEAAiE;IACjE,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC;IAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/G,MAAM,GAAG;QACP,SAAS;QACT,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,WAAW;QACvC,OAAO,EAAE,aAAa;QACtB,QAAQ;QACR,mBAAmB;QACnB,SAAS;QACT,WAAW;KACZ,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,gBAAgB,EAAE,CAAC;IACnB,aAAa,EAAE,CAAC;IAChB,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"activeProject.js","sourceRoot":"","sources":["../../src/session/activeProject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAuC,MAAM,wBAAwB,CAAC;AAEnH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa9C,IAAI,MAAM,GAAyB,IAAI,CAAC;AAExC,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,IAAI,MAAM;QAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,SAAiB;IAC1C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,aAAa,EAAE,CAAC;IAChB,iEAAiE;IACjE,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC;IAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/G,MAAM,GAAG;QACP,SAAS;QACT,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,WAAW;QACvC,OAAO,EAAE,aAAa;QACtB,QAAQ;QACR,mBAAmB;QACnB,SAAS;QACT,WAAW;KACZ,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,gBAAgB,EAAE,CAAC;IACnB,aAAa,EAAE,CAAC;IAChB,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAiB;IAC3C,MAAM,CAAC,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ;QAAE,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -12,9 +12,6 @@ export async function ensureDocLoaded(docId) {
12
12
  export function updateDoc(docId, newText, newVersion) {
13
13
  docs.set(docId, { docId, text: newText, version: newVersion });
14
14
  }
15
- export function getDoc(docId) {
16
- return docs.get(docId);
17
- }
18
15
  export function clearDocCache() {
19
16
  docs.clear();
20
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docCache.js","sourceRoot":"","sources":["../../src/session/docCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQ3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACpF,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,UAAkB;IAC1E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"docCache.js","sourceRoot":"","sources":["../../src/session/docCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQ3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACpF,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,UAAkB;IAC1E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { asJson, olGet, olPostJson, expectOk } from "../api/http.js";
3
- import { getActiveProject } from "../session/activeProject.js";
3
+ import { docPathById, getActiveProject } from "../session/activeProject.js";
4
4
  import { logger } from "../util/logger.js";
5
- async function fetchThreadsEnriched(projectId, entitiesByDocId) {
5
+ async function fetchThreadsEnriched(projectId, docPaths) {
6
6
  const [threadsRes, rangesRes] = await Promise.all([
7
7
  olGet(`project/${projectId}/threads`),
8
8
  olGet(`project/${projectId}/ranges`),
@@ -29,7 +29,7 @@ async function fetchThreadsEnriched(projectId, entitiesByDocId) {
29
29
  out.push({
30
30
  thread_id: threadId,
31
31
  doc_id: anchor?.doc_id,
32
- doc_path: anchor?.doc_id ? entitiesByDocId.get(anchor.doc_id)?.path : undefined,
32
+ doc_path: anchor?.doc_id ? docPaths.get(anchor.doc_id) : undefined,
33
33
  quoted_text: anchor?.c,
34
34
  position: anchor?.p,
35
35
  resolved: Boolean(thread.resolved),
@@ -57,14 +57,6 @@ const ThreadIdSchema = z.object({
57
57
  const ReplySchema = ThreadIdSchema.extend({
58
58
  content: z.string().min(1).describe("The reply text to post in the thread."),
59
59
  });
60
- function entitiesByDocId(ap) {
61
- const m = new Map();
62
- for (const e of ap.entities) {
63
- if (e.kind === "doc")
64
- m.set(e.id, { path: e.path });
65
- }
66
- return m;
67
- }
68
60
  export function registerComments(server) {
69
61
  server.registerTool("list_comments", {
70
62
  title: "List review-panel comment threads",
@@ -78,7 +70,7 @@ export function registerComments(server) {
78
70
  if (!ap)
79
71
  return { content: [{ type: "text", text: "No project is open. Call open_project first." }], isError: true };
80
72
  try {
81
- let threads = await fetchThreadsEnriched(ap.projectId, entitiesByDocId(ap));
73
+ let threads = await fetchThreadsEnriched(ap.projectId, docPathById(ap));
82
74
  if (!args.include_resolved)
83
75
  threads = threads.filter((t) => !t.resolved);
84
76
  if (args.path_contains) {
@@ -1 +1 @@
1
- {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/tools/comments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/tools/comments.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,7 @@
1
1
  import { z } from "zod";
2
- import { applyOtUpdate, getActiveSocket } from "../api/socket.js";
3
- import { getIdentity } from "../session/identity.js";
4
- import { ensureDocLoaded, updateDoc } from "../session/docCache.js";
5
- import { findByPath, getActiveProject } from "../session/activeProject.js";
6
2
  import { textToOps } from "../ot/diff.js";
7
- import { generateIdSeed } from "../ot/trackedChanges.js";
3
+ import { TRACK_MODES } from "../ot/trackedChanges.js";
4
+ import { prepareBaseline, resolveDocForEdit, submitAndVerify } from "../ot/editPipeline.js";
8
5
  import { logger } from "../util/logger.js";
9
6
  const Schema = z.object({
10
7
  path: z
@@ -21,9 +18,13 @@ const Schema = z.object({
21
18
  .optional()
22
19
  .describe("Optional safety check. If provided and the doc's current version differs, the edit is rejected."),
23
20
  track: z
24
- .enum(["auto", "on", "off"])
21
+ .enum(TRACK_MODES)
25
22
  .default("on")
26
- .describe("Tracked-changes mode. Default is 'on' — every edit lands as a pending suggestion in Overleaf's Review panel, which is what collaborators expect for an agent. Set 'off' explicitly to make a direct (untracked) edit. 'auto' tracks only when the project has track-changes enabled for this user."),
23
+ .describe("Tracked-changes mode. This is a client *request*, not a guarantee — when the project has `track_changes_on_for_me: true` (visible in `open_project`'s response), the server forces tracking regardless of what you pass, and the tool response will report `tracked: true, track_overridden: true`. Don't tell the user 'this will be untracked' without first checking that flag from `open_project`. Modes: 'on' (default) — explicitly request tracking; edit lands as a pending suggestion in Overleaf's Review panel, the agent-collaborator-friendly choice. 'off' — request a direct untracked write (may be overridden as above). 'auto' — track iff the project's tc setting says so."),
24
+ strict_version: z
25
+ .boolean()
26
+ .default(false)
27
+ .describe("If true, re-fetch the doc version from the server before sending the edit and refuse if the cached baseline is stale. Catches races from parallel agents (each MCP process has its own cache) or a concurrently open Overleaf web editor at the cost of one extra round-trip. Without this, the server's OT transform handles stale-version edits silently, which can land the op in an unexpected location or collapse it to a no-op. Recommended when several agents may be editing the same project."),
27
28
  });
28
29
  export function registerEditFile(server) {
29
30
  server.registerTool("edit_file", {
@@ -35,32 +36,16 @@ export function registerEditFile(server) {
35
36
  "Only .tex / .bib / .md / similar text docs are editable — binary files are not.",
36
37
  inputSchema: Schema.shape,
37
38
  }, async (args) => {
38
- const ap = getActiveProject();
39
- if (!ap) {
40
- return { content: [{ type: "text", text: "No project is open. Call open_project first." }], isError: true };
41
- }
42
- const resolvedPath = args.path ?? ap.rootDocPath;
43
- if (!resolvedPath) {
44
- return { content: [{ type: "text", text: "No path provided and the project has no configured root doc. Pass a `path`." }], isError: true };
45
- }
46
- const entity = findByPath(resolvedPath);
47
- if (!entity) {
48
- return {
49
- content: [{ type: "text", text: `Path not found in project: '${resolvedPath}'. Use list_files to inspect available paths.` }],
50
- isError: true,
51
- };
52
- }
53
- if (entity.kind !== "doc") {
54
- return { content: [{ type: "text", text: `'${resolvedPath}' is a ${entity.kind}, not an editable doc.` }], isError: true };
55
- }
39
+ const resolved = resolveDocForEdit(args.path);
40
+ if (!resolved.ok)
41
+ return resolved.response;
42
+ const { ap, entity } = resolved.doc;
56
43
  try {
57
- const cached = await ensureDocLoaded(entity.id);
58
- if (args.expected_version !== undefined && cached.version !== args.expected_version) {
59
- return {
60
- content: [{ type: "text", text: `Version mismatch: cached version is ${cached.version}, you provided ${args.expected_version}. Re-read the file and retry.` }],
61
- isError: true,
62
- };
63
- }
44
+ const baseline = await prepareBaseline(entity, { expected_version: args.expected_version, strict_version: args.strict_version });
45
+ if (!baseline.ok)
46
+ return baseline.response;
47
+ const { cached } = baseline;
48
+ const preEditText = cached.text;
64
49
  const ops = textToOps(cached.text, args.new_content);
65
50
  if (ops.length === 0) {
66
51
  return {
@@ -68,44 +53,43 @@ export function registerEditFile(server) {
68
53
  structuredContent: { path: entity.path, doc_id: entity.id, version: cached.version, ops_applied: 0 },
69
54
  };
70
55
  }
71
- const identity = await getIdentity();
72
- const sock = getActiveSocket();
73
- const shouldTrack = args.track === "on" ? true : args.track === "off" ? false : ap.trackChangesOnForMe;
74
- // The server enforces tracking when the user has track_changes_on_for_me,
75
- // regardless of meta.tc. So even a track:"off" call lands as tracked on
76
- // such projects — reflect that in the response so the caller knows.
77
- const serverWillTrack = shouldTrack || ap.trackChangesOnForMe;
78
- const trackOverridden = args.track === "off" && ap.trackChangesOnForMe;
79
- const meta = {
80
- source: sock?.publicId ?? "overleaf-mcp",
81
- ts: Date.now(),
82
- user_id: identity.userId,
83
- };
84
- if (shouldTrack)
85
- meta.tc = generateIdSeed();
86
- const update = {
87
- doc: entity.id,
88
- op: ops,
89
- v: cached.version,
90
- meta,
91
- };
92
- await applyOtUpdate(entity.id, update);
93
- const newVersion = cached.version + 1;
94
- updateDoc(entity.id, args.new_content, newVersion);
56
+ const r = await submitAndVerify({
57
+ ap, entity, cached, preEditText,
58
+ expectedText: args.new_content,
59
+ ops, track: args.track,
60
+ });
95
61
  const insertedChars = ops.reduce((n, op) => n + (op.i?.length ?? 0), 0);
96
62
  const deletedChars = ops.reduce((n, op) => n + (op.d?.length ?? 0), 0);
97
- const trackingNote = serverWillTrack
98
- ? (trackOverridden
99
- ? "Submitted as a tracked change — `track:\"off\"` was overridden because the project has track_changes_on_for_me. The edit lands as a pending suggestion in Overleaf's Review panel."
100
- : "Submitted as tracked changes — should appear as a pending suggestion in Overleaf's Review panel.")
101
- : "Submitted as a direct edit (no tracking).";
63
+ if (r.silentNoOp) {
64
+ return {
65
+ content: [{ type: "text", text: `Server acked the OT update for '${entity.path}' but the doc text is unchanged (silent no-op). ` +
66
+ `This usually means a parallel agent or open editor bumped the version between your last read and this edit, and the server's OT transform collapsed your ops. ` +
67
+ `Cache is now synced to the real server state (v${r.versionAfter}). Re-call read_file and retry; consider \`strict_version: true\` to fail fast on stale baselines.`,
68
+ }],
69
+ isError: true,
70
+ structuredContent: {
71
+ path: entity.path,
72
+ doc_id: entity.id,
73
+ ops_applied: ops.length,
74
+ chars_inserted: insertedChars,
75
+ chars_deleted: deletedChars,
76
+ version_before: cached.version,
77
+ version_after: r.versionAfter,
78
+ tracked: r.serverWillTrack,
79
+ track_mode: args.track,
80
+ track_overridden: r.trackOverridden,
81
+ verification_failed: true,
82
+ silent_no_op: true,
83
+ },
84
+ };
85
+ }
102
86
  return {
103
87
  content: [
104
88
  {
105
89
  type: "text",
106
90
  text: `Applied ${ops.length} op(s) to '${entity.path}' (+${insertedChars} / -${deletedChars} chars). ` +
107
- `Doc version ${cached.version} -> ${newVersion}. ` +
108
- trackingNote,
91
+ `Doc version ${cached.version} -> ${r.versionAfter}. ` +
92
+ r.trackingNote + r.concurrentNote + r.verifySkippedNote,
109
93
  },
110
94
  ],
111
95
  structuredContent: {
@@ -115,10 +99,13 @@ export function registerEditFile(server) {
115
99
  chars_inserted: insertedChars,
116
100
  chars_deleted: deletedChars,
117
101
  version_before: cached.version,
118
- version_after: newVersion,
119
- tracked: serverWillTrack,
102
+ version_after: r.versionAfter,
103
+ tracked: r.serverWillTrack,
120
104
  track_mode: args.track,
121
- track_overridden: trackOverridden,
105
+ track_overridden: r.trackOverridden,
106
+ verified: r.v ? r.v.matchesExpected : false,
107
+ had_concurrent_writes_after: r.v?.hadConcurrentWritesAfter ?? false,
108
+ verify_skipped: Boolean(r.verifyError),
122
109
  },
123
110
  };
124
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"editFile.js","sourceRoot":"","sources":["../../src/tools/editFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAkB,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,oIAAoI,CAAC;IACjJ,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CAAC,gIAAgI,CAAC;IAC7I,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,iGAAiG,CAAC;IAC9G,KAAK,EAAE,CAAC;SACL,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3B,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,oSAAoS,CACrS;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,8CAA8C;QACrD,WAAW,EACT,kGAAkG;YAClG,uFAAuF;YACvF,4HAA4H;YAC5H,4DAA4D;YAC5D,iFAAiF;QACnF,WAAW,EAAE,MAAM,CAAC,KAAK;KAC1B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9G,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6EAA6E,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7I,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,YAAY,+CAA+C,EAAE,CAAC;gBAC7H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,YAAY,UAAU,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7H,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpF,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,MAAM,CAAC,OAAO,kBAAkB,IAAI,CAAC,gBAAgB,+BAA+B,EAAE,CAAC;oBAC9J,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAgB,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAClE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qDAAqD,EAAE,CAAC;oBACxF,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE;iBACrG,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;YAC/B,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC;YACrF,0EAA0E;YAC1E,wEAAwE;YACxE,oEAAoE;YACpE,MAAM,eAAe,GAAG,WAAW,IAAI,EAAE,CAAC,mBAAmB,CAAC;YAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,mBAAmB,CAAC;YACvE,MAAM,IAAI,GAAkC;gBAC1C,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,cAAc;gBACxC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;gBACd,OAAO,EAAE,QAAQ,CAAC,MAAM;aACzB,CAAC;YACF,IAAI,WAAW;gBAAE,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAa;gBACvB,GAAG,EAAE,MAAM,CAAC,EAAE;gBACd,EAAE,EAAE,GAAG;gBACP,CAAC,EAAE,MAAM,CAAC,OAAO;gBACjB,IAAI;aACL,CAAC;YACF,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YACtC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,eAAe;gBAClC,CAAC,CAAC,CAAC,eAAe;oBACd,CAAC,CAAC,oLAAoL;oBACtL,CAAC,CAAC,kGAAkG,CAAC;gBACzG,CAAC,CAAC,2CAA2C,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,WAAW,GAAG,CAAC,MAAM,cAAc,MAAM,CAAC,IAAI,OAAO,aAAa,OAAO,YAAY,WAAW;4BAChG,eAAe,MAAM,CAAC,OAAO,OAAO,UAAU,IAAI;4BAClD,YAAY;qBACf;iBACF;gBACD,iBAAiB,EAAE;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,MAAM,EAAE,MAAM,CAAC,EAAE;oBACjB,WAAW,EAAE,GAAG,CAAC,MAAM;oBACvB,cAAc,EAAE,aAAa;oBAC7B,aAAa,EAAE,YAAY;oBAC3B,cAAc,EAAE,MAAM,CAAC,OAAO;oBAC9B,aAAa,EAAE,UAAU;oBACzB,OAAO,EAAE,eAAe;oBACxB,UAAU,EAAE,IAAI,CAAC,KAAK;oBACtB,gBAAgB,EAAE,eAAe;iBAClC;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACvG,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"editFile.js","sourceRoot":"","sources":["../../src/tools/editFile.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,7 @@
1
1
  import { z } from "zod";
2
- import { applyOtUpdate, getActiveSocket } from "../api/socket.js";
3
- import { getIdentity } from "../session/identity.js";
4
- import { ensureDocLoaded, updateDoc } from "../session/docCache.js";
5
- import { findByPath, getActiveProject } from "../session/activeProject.js";
6
2
  import { textToOps } from "../ot/diff.js";
7
- import { generateIdSeed } from "../ot/trackedChanges.js";
3
+ import { TRACK_MODES } from "../ot/trackedChanges.js";
4
+ import { prepareBaseline, resolveDocForEdit, submitAndVerify } from "../ot/editPipeline.js";
8
5
  import { logger } from "../util/logger.js";
9
6
  const Schema = z.object({
10
7
  path: z
@@ -29,9 +26,13 @@ const Schema = z.object({
29
26
  .optional()
30
27
  .describe("Optional safety check. If the doc's current version differs, the edit is rejected."),
31
28
  track: z
32
- .enum(["auto", "on", "off"])
29
+ .enum(TRACK_MODES)
33
30
  .default("on")
34
- .describe("Tracked-changes mode. Default 'on' lands the edit as a pending suggestion in the Review panel. 'off' writes directly; 'auto' tracks only when the project has track-changes enabled for this user."),
31
+ .describe("Tracked-changes mode. This is a client *request*, not a guarantee — when the project has `track_changes_on_for_me: true` (visible in `open_project`'s response), the server forces tracking regardless of what you pass, and the tool response will report `tracked: true, track_overridden: true`. Don't tell the user 'this will be untracked' without first checking that flag from `open_project`. Modes: 'on' (default) — explicitly request tracking; edit lands as a pending suggestion in Overleaf's Review panel. 'off' — request a direct untracked write (may be overridden as above). 'auto' — track iff the project's tc setting says so."),
32
+ strict_version: z
33
+ .boolean()
34
+ .default(false)
35
+ .describe("If true, re-fetch the doc version before sending the edit and refuse if the cached baseline is stale. Catches races from parallel agents (each MCP process has its own cache) or a concurrently open Overleaf web editor at the cost of one extra round-trip. Without this, the server's OT transform handles stale-version edits silently, which can land the op in an unexpected location or collapse it to a no-op. Recommended when several agents may be editing the same project."),
35
36
  });
36
37
  // Find every non-overlapping start index of `needle` in `haystack`.
37
38
  export function findAllIndices(haystack, needle) {
@@ -69,38 +70,20 @@ export function registerFindAndReplace(server) {
69
70
  "By default `old_string` must be unique; ambiguous matches are returned with line:column locations so you can extend the match. " +
70
71
  "Submits the minimal OT operation through the same pathway as `edit_file`, so by default it lands as a pending suggestion in Overleaf's Review panel (track:'on'). " +
71
72
  "If `path` is omitted, defaults to the project's root doc. " +
72
- "Prefer this over `edit_file` for targeted edits — it's cheaper in tokens and avoids accidental whitespace drift from re-emitting the surrounding text.",
73
+ "USE WHEN: a SINGLE targeted edit (one typo, one label rename, one heading change) in a large doc — saves tokens vs. re-emitting the body and avoids accidental whitespace drift. " +
74
+ "AVOID FOR BATCH WORK: for multiple substitutions (e.g. converting many words, applying a style guide across a chapter) prefer ONE `edit_file` call with all changes computed client-side. " +
75
+ "Each find_and_replace is its own round-trip with its own race window, its own tracked-change entry, and its own cache-sync cycle — calling it N times for N small changes amplifies the failure modes that one batched `edit_file` would avoid.",
73
76
  inputSchema: Schema.shape,
74
77
  }, async (args) => {
75
- const ap = getActiveProject();
76
- if (!ap) {
77
- return { content: [{ type: "text", text: "No project is open. Call open_project first." }], isError: true };
78
- }
79
- const resolvedPath = args.path ?? ap.rootDocPath;
80
- if (!resolvedPath) {
81
- return {
82
- content: [{ type: "text", text: "No path provided and the project has no configured root doc. Pass a `path`." }],
83
- isError: true,
84
- };
85
- }
86
- const entity = findByPath(resolvedPath);
87
- if (!entity) {
88
- return {
89
- content: [{ type: "text", text: `Path not found in project: '${resolvedPath}'. Use list_files to inspect available paths.` }],
90
- isError: true,
91
- };
92
- }
93
- if (entity.kind !== "doc") {
94
- return { content: [{ type: "text", text: `'${resolvedPath}' is a ${entity.kind}, not an editable doc.` }], isError: true };
95
- }
78
+ const resolved = resolveDocForEdit(args.path);
79
+ if (!resolved.ok)
80
+ return resolved.response;
81
+ const { ap, entity } = resolved.doc;
96
82
  try {
97
- const cached = await ensureDocLoaded(entity.id);
98
- if (args.expected_version !== undefined && cached.version !== args.expected_version) {
99
- return {
100
- content: [{ type: "text", text: `Version mismatch: cached version is ${cached.version}, you provided ${args.expected_version}. Re-read the file and retry.` }],
101
- isError: true,
102
- };
103
- }
83
+ const baseline = await prepareBaseline(entity, { expected_version: args.expected_version, strict_version: args.strict_version });
84
+ if (!baseline.ok)
85
+ return baseline.response;
86
+ const { cached } = baseline;
104
87
  const indices = findAllIndices(cached.text, args.old_string);
105
88
  if (indices.length === 0) {
106
89
  return {
@@ -129,14 +112,10 @@ export function registerFindAndReplace(server) {
129
112
  isError: true,
130
113
  };
131
114
  }
132
- let newContent;
133
- if (args.replace_all) {
134
- newContent = cached.text.split(args.old_string).join(args.new_string);
135
- }
136
- else {
137
- const idx = indices[0];
138
- newContent = cached.text.slice(0, idx) + args.new_string + cached.text.slice(idx + args.old_string.length);
139
- }
115
+ const preEditText = cached.text;
116
+ const newContent = args.replace_all
117
+ ? cached.text.split(args.old_string).join(args.new_string)
118
+ : cached.text.slice(0, indices[0]) + args.new_string + cached.text.slice(indices[0] + args.old_string.length);
140
119
  const ops = textToOps(cached.text, newContent);
141
120
  if (ops.length === 0) {
142
121
  return {
@@ -144,36 +123,39 @@ export function registerFindAndReplace(server) {
144
123
  structuredContent: { path: entity.path, doc_id: entity.id, version: cached.version, ops_applied: 0 },
145
124
  };
146
125
  }
147
- const identity = await getIdentity();
148
- const sock = getActiveSocket();
149
- const shouldTrack = args.track === "on" ? true : args.track === "off" ? false : ap.trackChangesOnForMe;
150
- // The server enforces tracking when the user has track_changes_on_for_me,
151
- // regardless of meta.tc. So even a track:"off" call lands as tracked on
152
- // such projects — reflect that in the response so the caller knows.
153
- const serverWillTrack = shouldTrack || ap.trackChangesOnForMe;
154
- const trackOverridden = args.track === "off" && ap.trackChangesOnForMe;
155
- const meta = {
156
- source: sock?.publicId ?? "overleaf-mcp",
157
- ts: Date.now(),
158
- user_id: identity.userId,
159
- };
160
- if (shouldTrack)
161
- meta.tc = generateIdSeed();
162
- const update = { doc: entity.id, op: ops, v: cached.version, meta };
163
- await applyOtUpdate(entity.id, update);
164
- const newVersion = cached.version + 1;
165
- updateDoc(entity.id, newContent, newVersion);
126
+ const r = await submitAndVerify({
127
+ ap, entity, cached, preEditText,
128
+ expectedText: newContent,
129
+ ops, track: args.track,
130
+ });
166
131
  const replacements = args.replace_all ? indices.length : 1;
167
- const trackingNote = serverWillTrack
168
- ? (trackOverridden
169
- ? "Submitted as a tracked change — `track:\"off\"` was overridden because the project has track_changes_on_for_me. The edit lands as a pending suggestion in Overleaf's Review panel."
170
- : "Submitted as tracked changes — should appear as a pending suggestion in Overleaf's Review panel.")
171
- : "Submitted as a direct edit (no tracking).";
132
+ if (r.silentNoOp) {
133
+ return {
134
+ content: [{ type: "text", text: `Server acked the OT update for '${entity.path}' but the doc text is unchanged (silent no-op). ` +
135
+ `\`old_string\` matched in your cached baseline, ops were sent and acked, but the server's doc didn't move — usually because a parallel agent or open editor bumped the version between your last read and this edit, and the server's OT transform collapsed your ops. ` +
136
+ `Cache is now synced to the real server state (v${r.versionAfter}). Re-call read_file and retry; consider \`strict_version: true\` to fail fast on stale baselines.`,
137
+ }],
138
+ isError: true,
139
+ structuredContent: {
140
+ path: entity.path,
141
+ doc_id: entity.id,
142
+ replacements: 0,
143
+ ops_applied: ops.length,
144
+ version_before: cached.version,
145
+ version_after: r.versionAfter,
146
+ tracked: r.serverWillTrack,
147
+ track_mode: args.track,
148
+ track_overridden: r.trackOverridden,
149
+ verification_failed: true,
150
+ silent_no_op: true,
151
+ },
152
+ };
153
+ }
172
154
  return {
173
155
  content: [{
174
156
  type: "text",
175
- text: `Replaced ${replacements} occurrence(s) in '${entity.path}'. Doc version ${cached.version} -> ${newVersion}. ` +
176
- trackingNote,
157
+ text: `Replaced ${replacements} occurrence(s) in '${entity.path}'. Doc version ${cached.version} -> ${r.versionAfter}. ` +
158
+ r.trackingNote + r.concurrentNote + r.verifySkippedNote,
177
159
  }],
178
160
  structuredContent: {
179
161
  path: entity.path,
@@ -181,10 +163,13 @@ export function registerFindAndReplace(server) {
181
163
  replacements,
182
164
  ops_applied: ops.length,
183
165
  version_before: cached.version,
184
- version_after: newVersion,
185
- tracked: serverWillTrack,
166
+ version_after: r.versionAfter,
167
+ tracked: r.serverWillTrack,
186
168
  track_mode: args.track,
187
- track_overridden: trackOverridden,
169
+ track_overridden: r.trackOverridden,
170
+ verified: r.v ? r.v.matchesExpected : false,
171
+ had_concurrent_writes_after: r.v?.hadConcurrentWritesAfter ?? false,
172
+ verify_skipped: Boolean(r.verifyError),
188
173
  },
189
174
  };
190
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"findAndReplace.js","sourceRoot":"","sources":["../../src/tools/findAndReplace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findAndReplace.js","sourceRoot":"","sources":["../../src/tools/findAndReplace.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { asJson, olGet, olPostJson, expectOk } from "../api/http.js";
3
- import { getActiveProject } from "../session/activeProject.js";
4
- import { applyOtUpdate, getActiveSocket } from "../api/socket.js";
3
+ import { docPathById, getActiveProject } from "../session/activeProject.js";
4
+ import { applyOtUpdate, getActiveSocket, joinDoc } from "../api/socket.js";
5
5
  import { getIdentity } from "../session/identity.js";
6
6
  import { generateIdSeed } from "../ot/trackedChanges.js";
7
7
  import { logger } from "../util/logger.js";
@@ -18,13 +18,6 @@ function memberMap(ap) {
18
18
  add(u);
19
19
  return m;
20
20
  }
21
- function docPathById(ap) {
22
- const m = new Map();
23
- for (const e of ap.entities)
24
- if (e.kind === "doc")
25
- m.set(e.id, e.path);
26
- return m;
27
- }
28
21
  async function fetchAllRanges(projectId) {
29
22
  const res = await olGet(`project/${projectId}/ranges`);
30
23
  return await asJson(res, "GET /ranges");
@@ -84,12 +77,9 @@ async function rejectViaOt(docId, changes) {
84
77
  );
85
78
  const identity = await getIdentity();
86
79
  const sock = getActiveSocket();
87
- // Version must be the current server version. We don't track it for arbitrary
88
- // docs the way docCache does for ones we've joined for editing — but the
89
- // server will still accept and transform if our v is slightly stale. Use 0
90
- // is a no-go; better to joinDoc first to fetch the version.
91
- // Easiest: just fetch via socket joinDoc to get latest version.
92
- const { joinDoc } = await import("../api/socket.js");
80
+ // We don't keep a cache for arbitrary docs (only ones the agent has edited),
81
+ // so fetch the current version straight from the server before sending the
82
+ // inverse op.
93
83
  const fresh = await joinDoc(docId);
94
84
  const update = {
95
85
  doc: docId,
@@ -1 +1 @@
1
- {"version":3,"file":"trackedChanges.js","sourceRoot":"","sources":["../../src/tools/trackedChanges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trackedChanges.js","sourceRoot":"","sources":["../../src/tools/trackedChanges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAiB,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAe3C,SAAS,SAAS,CAAC,EAAoD;IACrE,MAAM,CAAC,GAAG,IAAI,GAAG,EAA6C,CAAC;IAC/D,MAAM,GAAG,GAAG,CAAC,CAA2B,EAAE,EAAE;QAC1C,IAAI,CAAC,CAAC,EAAE,GAAG;YAAE,OAAO;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;QAChF,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,SAAS,SAAS,CAAC,CAAC;IACvD,OAAO,MAAM,MAAM,CAAiB,GAAG,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CACrB,MAAsB,EACtB,OAA4B,EAC5B,OAAuD;IAEvD,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,CAAC,CAAC,EAA2C,CAAC;YACzD,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC;YAC1C,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC;gBACP,SAAS,EAAE,CAAC,CAAC,EAAE;gBACf,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBACpC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACd,IAAI;gBACJ,OAAO,EAAE,MAAM;gBACf,WAAW,EAAE,MAAM,EAAE,IAAI;gBACzB,YAAY,EAAE,MAAM,EAAE,KAAK;gBAC3B,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6CAA6C;AAE7C,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAC7F,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;IAC9I,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;IAC9H,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;IAChH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACvG,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,0FAA0F,CAAC;CAC3I,CAAC,CAAC;AAEH,uCAAuC;AAEvC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CACpH,CAAC,CAAC;AAEH,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,KAAa,EAAE,SAAmB;IAC7E,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,WAAW,SAAS,QAAQ,KAAK,iBAAiB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5G,MAAM,QAAQ,CAAC,GAAG,EAAE,gBAAgB,SAAS,QAAQ,KAAK,iBAAiB,CAAC,CAAC;AAC/E,CAAC;AAED,uCAAuC;AAEvC,MAAM,YAAY,GAAG,YAAY,CAAC;AAElC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,OAAqB;IAC7D,8EAA8E;IAC9E,6FAA6F;IAC7F,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,CAAC,CAAC,IAAI,KAAK,QAAQ;QACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAE,2CAA2C;QACpF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAE,8CAA8C;KAC1F,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,6EAA6E;IAC7E,2EAA2E;IAC3E,cAAc;IACd,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAa;QACvB,GAAG,EAAE,KAAK;QACV,EAAE,EAAE,GAAG;QACP,CAAC,EAAE,KAAK,CAAC,OAAO;QAChB,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,cAAc;YACxC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,OAAO,EAAE,QAAQ,CAAC,MAAM;YACxB,EAAE,EAAE,cAAc,EAAE;SACrB;KACF,CAAC;IACF,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,qCAAqC;AAErC,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,sDAAsD;QAC7D,WAAW,EACT,wNAAwN;YACxN,yKAAyK;YACzK,6EAA6E;QAC/E,WAAW,EAAE,UAAU,CAAC,KAAK;QAC7B,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,GAAG,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;gBACjC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACvC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;gBAChD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;gBAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;gBAChD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9G,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjD,GAAG,CAAC;gBACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBACpD,cAAc,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;aACvD,CAAC,CAAC,CAAC;YACJ,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC9F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACnE,iBAAiB,EAAE,OAAO;aAC3B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YACjD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,oQAAoQ;QACtQ,WAAW,EAAE,YAAY,CAAC,KAAK;KAChC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,IAAI,CAAC;YACH,yDAAyD;YACzD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC9C,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;oBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACvB,CAAC;oBACJ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACnC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uGAAuG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3L,CAAC;YACD,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,MAAM,UAAU,GAAgE,EAAE,CAAC;YACnF,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YAChC,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;gBACnC,MAAM,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC3C,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC;gBACvB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,QAAQ,qBAAqB,UAAU,CAAC,MAAM,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC9G,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;aAC3D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,+VAA+V;QACjW,WAAW,EAAE,YAAY,CAAC,KAAK;KAChC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5F,IAAI,CAAC;YACH,mEAAmE;YACnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC;YACtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qGAAqG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzL,CAAC;YACD,mCAAmC;YACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;YAC9C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACZ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,MAAM,UAAU,GAAgE,EAAE,CAAC;YACnF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBAClC,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC/B,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;gBACxB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,QAAQ,qBAAqB,UAAU,CAAC,MAAM,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC9G,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;aAC3D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netique/overleaf-mcp",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "MCP server for Overleaf with tracked-changes support, via the Socket.IO web API (not the Git bridge).",
5
5
  "type": "module",
6
6
  "bin": {