mrplex 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -0
  3. package/dist/cli/config.d.ts +28 -0
  4. package/dist/cli/config.js +48 -0
  5. package/dist/cli/config.js.map +1 -0
  6. package/dist/cli/exit-codes.d.ts +13 -0
  7. package/dist/cli/exit-codes.js +39 -0
  8. package/dist/cli/exit-codes.js.map +1 -0
  9. package/dist/cli/format.d.ts +22 -0
  10. package/dist/cli/format.js +148 -0
  11. package/dist/cli/format.js.map +1 -0
  12. package/dist/cli/main.d.ts +16 -0
  13. package/dist/cli/main.js +1518 -0
  14. package/dist/cli/main.js.map +1 -0
  15. package/dist/client/kernel-client.d.ts +97 -0
  16. package/dist/client/kernel-client.js +14 -0
  17. package/dist/client/kernel-client.js.map +1 -0
  18. package/dist/client/local.d.ts +26 -0
  19. package/dist/client/local.js +103 -0
  20. package/dist/client/local.js.map +1 -0
  21. package/dist/client/remote-mcp.d.ts +35 -0
  22. package/dist/client/remote-mcp.js +174 -0
  23. package/dist/client/remote-mcp.js.map +1 -0
  24. package/dist/embed/backfill.d.ts +24 -0
  25. package/dist/embed/backfill.js +33 -0
  26. package/dist/embed/backfill.js.map +1 -0
  27. package/dist/embed/chunker.d.ts +31 -0
  28. package/dist/embed/chunker.js +121 -0
  29. package/dist/embed/chunker.js.map +1 -0
  30. package/dist/embed/cmd-hook.d.ts +21 -0
  31. package/dist/embed/cmd-hook.js +100 -0
  32. package/dist/embed/cmd-hook.js.map +1 -0
  33. package/dist/embed/config.d.ts +61 -0
  34. package/dist/embed/config.js +109 -0
  35. package/dist/embed/config.js.map +1 -0
  36. package/dist/embed/hook.d.ts +38 -0
  37. package/dist/embed/hook.js +56 -0
  38. package/dist/embed/hook.js.map +1 -0
  39. package/dist/embed/http-hook.d.ts +13 -0
  40. package/dist/embed/http-hook.js +39 -0
  41. package/dist/embed/http-hook.js.map +1 -0
  42. package/dist/embed/worker.d.ts +62 -0
  43. package/dist/embed/worker.js +228 -0
  44. package/dist/embed/worker.js.map +1 -0
  45. package/dist/fixtures/hwe/characters/albion-ever.md +12 -0
  46. package/dist/fixtures/hwe/characters/cent.md +11 -0
  47. package/dist/fixtures/hwe/concepts/cent-demiurge-resonance.md +10 -0
  48. package/dist/fixtures/hwe/concepts/phase-looper.md +10 -0
  49. package/dist/fixtures/hwe/entities/demiurge.md +11 -0
  50. package/dist/fixtures/hwe/entities/monad.md +11 -0
  51. package/dist/fixtures/hwe/moc/globocorp-network.md +19 -0
  52. package/dist/fixtures/hwe/organizations/globocorp.md +11 -0
  53. package/dist/fixtures/hwe/readme.md +24 -0
  54. package/dist/fixtures/starship/crew/aria-okonkwo.md +14 -0
  55. package/dist/fixtures/starship/crew/bexley-orr.md +14 -0
  56. package/dist/fixtures/starship/crew/dax-thorne.md +14 -0
  57. package/dist/fixtures/starship/crew/isolde-marsh.md +16 -0
  58. package/dist/fixtures/starship/crew/kestrel-vance.md +15 -0
  59. package/dist/fixtures/starship/crew/quill-vasquez.md +14 -0
  60. package/dist/fixtures/starship/crew/soren-halloway.md +16 -0
  61. package/dist/fixtures/starship/encounters/the-drift-choir.md +14 -0
  62. package/dist/fixtures/starship/encounters/the-hollow-signal.md +16 -0
  63. package/dist/fixtures/starship/encounters/the-wandering-buoy.md +14 -0
  64. package/dist/fixtures/starship/equipment/coolant-loop-b.md +13 -0
  65. package/dist/fixtures/starship/equipment/emergency-ration-bars.md +12 -0
  66. package/dist/fixtures/starship/equipment/long-range-sensors.md +13 -0
  67. package/dist/fixtures/starship/equipment/plasma-manifold-3.md +15 -0
  68. package/dist/fixtures/starship/equipment/shuttle-corvid.md +13 -0
  69. package/dist/fixtures/starship/logs/marsh-4419-1.md +13 -0
  70. package/dist/fixtures/starship/logs/okonkwo-4415-1.md +13 -0
  71. package/dist/fixtures/starship/logs/orr-4413-1.md +13 -0
  72. package/dist/fixtures/starship/logs/orr-4420-1.md +12 -0
  73. package/dist/fixtures/starship/logs/thorne-4413-2.md +13 -0
  74. package/dist/fixtures/starship/logs/vance-4419-2.md +13 -0
  75. package/dist/fixtures/starship/misc/the-galley-ficus.md +11 -0
  76. package/dist/fixtures/starship/missions/the-cinder-run.md +17 -0
  77. package/dist/fixtures/starship/missions/the-drift-choir.md +17 -0
  78. package/dist/fixtures/starship/missions/the-hollow-signal.md +17 -0
  79. package/dist/fixtures/starship/missions/the-silent-beacon.md +17 -0
  80. package/dist/fixtures/starship/moc/crew.md +19 -0
  81. package/dist/fixtures/starship/moc/encounters.md +14 -0
  82. package/dist/fixtures/starship/moc/missions.md +15 -0
  83. package/dist/fixtures/starship/readme.md +60 -0
  84. package/dist/index.d.ts +1 -0
  85. package/dist/index.js +3 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/kernel/auth/glob.d.ts +46 -0
  88. package/dist/kernel/auth/glob.js +112 -0
  89. package/dist/kernel/auth/glob.js.map +1 -0
  90. package/dist/kernel/auth/scope.d.ts +53 -0
  91. package/dist/kernel/auth/scope.js +83 -0
  92. package/dist/kernel/auth/scope.js.map +1 -0
  93. package/dist/kernel/casefold.d.ts +37 -0
  94. package/dist/kernel/casefold.js +44 -0
  95. package/dist/kernel/casefold.js.map +1 -0
  96. package/dist/kernel/constants.d.ts +21 -0
  97. package/dist/kernel/constants.js +22 -0
  98. package/dist/kernel/constants.js.map +1 -0
  99. package/dist/kernel/context.d.ts +70 -0
  100. package/dist/kernel/context.js +114 -0
  101. package/dist/kernel/context.js.map +1 -0
  102. package/dist/kernel/deletion.d.ts +50 -0
  103. package/dist/kernel/deletion.js +83 -0
  104. package/dist/kernel/deletion.js.map +1 -0
  105. package/dist/kernel/diff.d.ts +36 -0
  106. package/dist/kernel/diff.js +61 -0
  107. package/dist/kernel/diff.js.map +1 -0
  108. package/dist/kernel/errors.d.ts +37 -0
  109. package/dist/kernel/errors.js +55 -0
  110. package/dist/kernel/errors.js.map +1 -0
  111. package/dist/kernel/frontmatter-input.d.ts +32 -0
  112. package/dist/kernel/frontmatter-input.js +85 -0
  113. package/dist/kernel/frontmatter-input.js.map +1 -0
  114. package/dist/kernel/graph.d.ts +34 -0
  115. package/dist/kernel/graph.js +559 -0
  116. package/dist/kernel/graph.js.map +1 -0
  117. package/dist/kernel/history.d.ts +74 -0
  118. package/dist/kernel/history.js +143 -0
  119. package/dist/kernel/history.js.map +1 -0
  120. package/dist/kernel/kernel.d.ts +162 -0
  121. package/dist/kernel/kernel.js +675 -0
  122. package/dist/kernel/kernel.js.map +1 -0
  123. package/dist/kernel/path-config.d.ts +101 -0
  124. package/dist/kernel/path-config.js +171 -0
  125. package/dist/kernel/path-config.js.map +1 -0
  126. package/dist/kernel/query/ast.d.ts +24 -0
  127. package/dist/kernel/query/ast.js +52 -0
  128. package/dist/kernel/query/ast.js.map +1 -0
  129. package/dist/kernel/query/cel-parse.d.ts +37 -0
  130. package/dist/kernel/query/cel-parse.js +88 -0
  131. package/dist/kernel/query/cel-parse.js.map +1 -0
  132. package/dist/kernel/query/degrees.d.ts +31 -0
  133. package/dist/kernel/query/degrees.js +135 -0
  134. package/dist/kernel/query/degrees.js.map +1 -0
  135. package/dist/kernel/query/graph-ast.d.ts +51 -0
  136. package/dist/kernel/query/graph-ast.js +139 -0
  137. package/dist/kernel/query/graph-ast.js.map +1 -0
  138. package/dist/kernel/query/query.d.ts +56 -0
  139. package/dist/kernel/query/query.js +276 -0
  140. package/dist/kernel/query/query.js.map +1 -0
  141. package/dist/kernel/validation.d.ts +64 -0
  142. package/dist/kernel/validation.js +183 -0
  143. package/dist/kernel/validation.js.map +1 -0
  144. package/dist/kernel/version-id.d.ts +10 -0
  145. package/dist/kernel/version-id.js +21 -0
  146. package/dist/kernel/version-id.js.map +1 -0
  147. package/dist/kernel/wire.d.ts +148 -0
  148. package/dist/kernel/wire.js +6 -0
  149. package/dist/kernel/wire.js.map +1 -0
  150. package/dist/links/backfill.d.ts +28 -0
  151. package/dist/links/backfill.js +33 -0
  152. package/dist/links/backfill.js.map +1 -0
  153. package/dist/links/extract.d.ts +29 -0
  154. package/dist/links/extract.js +233 -0
  155. package/dist/links/extract.js.map +1 -0
  156. package/dist/links/link-config.d.ts +70 -0
  157. package/dist/links/link-config.js +107 -0
  158. package/dist/links/link-config.js.map +1 -0
  159. package/dist/links/maintain.d.ts +37 -0
  160. package/dist/links/maintain.js +91 -0
  161. package/dist/links/maintain.js.map +1 -0
  162. package/dist/links/repair.d.ts +46 -0
  163. package/dist/links/repair.js +96 -0
  164. package/dist/links/repair.js.map +1 -0
  165. package/dist/links/resolve.d.ts +41 -0
  166. package/dist/links/resolve.js +121 -0
  167. package/dist/links/resolve.js.map +1 -0
  168. package/dist/links/stale.d.ts +32 -0
  169. package/dist/links/stale.js +73 -0
  170. package/dist/links/stale.js.map +1 -0
  171. package/dist/markdown/content-hash.d.ts +34 -0
  172. package/dist/markdown/content-hash.js +46 -0
  173. package/dist/markdown/content-hash.js.map +1 -0
  174. package/dist/markdown/frontmatter.d.ts +69 -0
  175. package/dist/markdown/frontmatter.js +147 -0
  176. package/dist/markdown/frontmatter.js.map +1 -0
  177. package/dist/markdown/hash-backfill.d.ts +22 -0
  178. package/dist/markdown/hash-backfill.js +43 -0
  179. package/dist/markdown/hash-backfill.js.map +1 -0
  180. package/dist/mcp/query-syntax.d.ts +20 -0
  181. package/dist/mcp/query-syntax.js +194 -0
  182. package/dist/mcp/query-syntax.js.map +1 -0
  183. package/dist/mcp/render.d.ts +31 -0
  184. package/dist/mcp/render.js +110 -0
  185. package/dist/mcp/render.js.map +1 -0
  186. package/dist/mcp/server.d.ts +60 -0
  187. package/dist/mcp/server.js +170 -0
  188. package/dist/mcp/server.js.map +1 -0
  189. package/dist/mcp/tools.d.ts +93 -0
  190. package/dist/mcp/tools.js +1218 -0
  191. package/dist/mcp/tools.js.map +1 -0
  192. package/dist/rest/conditional.d.ts +37 -0
  193. package/dist/rest/conditional.js +58 -0
  194. package/dist/rest/conditional.js.map +1 -0
  195. package/dist/rest/negotiate.d.ts +33 -0
  196. package/dist/rest/negotiate.js +54 -0
  197. package/dist/rest/negotiate.js.map +1 -0
  198. package/dist/rest/routes.d.ts +37 -0
  199. package/dist/rest/routes.js +744 -0
  200. package/dist/rest/routes.js.map +1 -0
  201. package/dist/seed/fixture-seed.d.ts +35 -0
  202. package/dist/seed/fixture-seed.js +75 -0
  203. package/dist/seed/fixture-seed.js.map +1 -0
  204. package/dist/seed/starship-config.d.ts +3 -0
  205. package/dist/seed/starship-config.js +5 -0
  206. package/dist/seed/starship-config.js.map +1 -0
  207. package/dist/server/headers.d.ts +36 -0
  208. package/dist/server/headers.js +30 -0
  209. package/dist/server/headers.js.map +1 -0
  210. package/dist/server/http-error.d.ts +53 -0
  211. package/dist/server/http-error.js +104 -0
  212. package/dist/server/http-error.js.map +1 -0
  213. package/dist/server/serve.d.ts +56 -0
  214. package/dist/server/serve.js +135 -0
  215. package/dist/server/serve.js.map +1 -0
  216. package/dist/shell/audit.d.ts +32 -0
  217. package/dist/shell/audit.js +28 -0
  218. package/dist/shell/audit.js.map +1 -0
  219. package/dist/shell/guard.d.ts +50 -0
  220. package/dist/shell/guard.js +176 -0
  221. package/dist/shell/guard.js.map +1 -0
  222. package/dist/shell/keys.d.ts +36 -0
  223. package/dist/shell/keys.js +64 -0
  224. package/dist/shell/keys.js.map +1 -0
  225. package/dist/shell/login.d.ts +56 -0
  226. package/dist/shell/login.js +130 -0
  227. package/dist/shell/login.js.map +1 -0
  228. package/dist/shell/oidc.d.ts +62 -0
  229. package/dist/shell/oidc.js +102 -0
  230. package/dist/shell/oidc.js.map +1 -0
  231. package/dist/shell/policy.d.ts +100 -0
  232. package/dist/shell/policy.js +232 -0
  233. package/dist/shell/policy.js.map +1 -0
  234. package/dist/shell/proxy-policy.d.ts +34 -0
  235. package/dist/shell/proxy-policy.js +120 -0
  236. package/dist/shell/proxy-policy.js.map +1 -0
  237. package/dist/shell/proxy.d.ts +47 -0
  238. package/dist/shell/proxy.js +253 -0
  239. package/dist/shell/proxy.js.map +1 -0
  240. package/dist/shell/serve.d.ts +86 -0
  241. package/dist/shell/serve.js +0 -0
  242. package/dist/shell/serve.js.map +1 -0
  243. package/dist/shell/stdio.d.ts +55 -0
  244. package/dist/shell/stdio.js +63 -0
  245. package/dist/shell/stdio.js.map +1 -0
  246. package/dist/storage/registry.d.ts +20 -0
  247. package/dist/storage/registry.js +38 -0
  248. package/dist/storage/registry.js.map +1 -0
  249. package/dist/storage/search-plan.d.ts +93 -0
  250. package/dist/storage/search-plan.js +15 -0
  251. package/dist/storage/search-plan.js.map +1 -0
  252. package/dist/storage/types.d.ts +448 -0
  253. package/dist/storage/types.js +14 -0
  254. package/dist/storage/types.js.map +1 -0
  255. package/dist/storage/versions-since.d.ts +72 -0
  256. package/dist/storage/versions-since.js +92 -0
  257. package/dist/storage/versions-since.js.map +1 -0
  258. package/dist/storage-postgres/adapter.d.ts +17 -0
  259. package/dist/storage-postgres/adapter.js +782 -0
  260. package/dist/storage-postgres/adapter.js.map +1 -0
  261. package/dist/storage-postgres/compile-postgres.d.ts +22 -0
  262. package/dist/storage-postgres/compile-postgres.js +830 -0
  263. package/dist/storage-postgres/compile-postgres.js.map +1 -0
  264. package/dist/storage-postgres/errors.d.ts +34 -0
  265. package/dist/storage-postgres/errors.js +50 -0
  266. package/dist/storage-postgres/errors.js.map +1 -0
  267. package/dist/storage-postgres/migrations/0001_init.sql +113 -0
  268. package/dist/storage-postgres/migrations/0002_content_hash.sql +7 -0
  269. package/dist/storage-postgres/migrations/index.d.ts +22 -0
  270. package/dist/storage-postgres/migrations/index.js +70 -0
  271. package/dist/storage-postgres/migrations/index.js.map +1 -0
  272. package/dist/storage-sqlite/adapter.d.ts +2 -0
  273. package/dist/storage-sqlite/adapter.js +688 -0
  274. package/dist/storage-sqlite/adapter.js.map +1 -0
  275. package/dist/storage-sqlite/compile-filter.d.ts +41 -0
  276. package/dist/storage-sqlite/compile-filter.js +881 -0
  277. package/dist/storage-sqlite/compile-filter.js.map +1 -0
  278. package/dist/storage-sqlite/compile-sqlite.d.ts +19 -0
  279. package/dist/storage-sqlite/compile-sqlite.js +176 -0
  280. package/dist/storage-sqlite/compile-sqlite.js.map +1 -0
  281. package/dist/storage-sqlite/migrations/0001_init.sql +123 -0
  282. package/dist/storage-sqlite/migrations/0002_content_hash.sql +7 -0
  283. package/dist/storage-sqlite/migrations/index.d.ts +6 -0
  284. package/dist/storage-sqlite/migrations/index.js +41 -0
  285. package/dist/storage-sqlite/migrations/index.js.map +1 -0
  286. package/dist/storage-sqlite/vec.d.ts +40 -0
  287. package/dist/storage-sqlite/vec.js +62 -0
  288. package/dist/storage-sqlite/vec.js.map +1 -0
  289. package/dist/sync/cursor.d.ts +36 -0
  290. package/dist/sync/cursor.js +66 -0
  291. package/dist/sync/cursor.js.map +1 -0
  292. package/dist/sync/daemon.d.ts +40 -0
  293. package/dist/sync/daemon.js +202 -0
  294. package/dist/sync/daemon.js.map +1 -0
  295. package/dist/sync/feed.d.ts +38 -0
  296. package/dist/sync/feed.js +125 -0
  297. package/dist/sync/feed.js.map +1 -0
  298. package/dist/sync/fs-store.d.ts +8 -0
  299. package/dist/sync/fs-store.js +76 -0
  300. package/dist/sync/fs-store.js.map +1 -0
  301. package/dist/sync/intrinsics.d.ts +52 -0
  302. package/dist/sync/intrinsics.js +76 -0
  303. package/dist/sync/intrinsics.js.map +1 -0
  304. package/dist/sync/paths.d.ts +38 -0
  305. package/dist/sync/paths.js +56 -0
  306. package/dist/sync/paths.js.map +1 -0
  307. package/dist/sync/push.d.ts +48 -0
  308. package/dist/sync/push.js +328 -0
  309. package/dist/sync/push.js.map +1 -0
  310. package/dist/sync/reconcile.d.ts +54 -0
  311. package/dist/sync/reconcile.js +252 -0
  312. package/dist/sync/reconcile.js.map +1 -0
  313. package/dist/sync/run.d.ts +27 -0
  314. package/dist/sync/run.js +46 -0
  315. package/dist/sync/run.js.map +1 -0
  316. package/dist/version.d.ts +2 -0
  317. package/dist/version.js +5 -0
  318. package/dist/version.js.map +1 -0
  319. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-filter.js","sourceRoot":"","sources":["../../src/storage-sqlite/compile-filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * SearchPlan → SQLite SQL compiler (m5-plan WS2).
3
+ *
4
+ * The kernel builds a `SearchPlan` (parsed CEL AST + scope groups +
5
+ * per-repo sigil groups + optional FTS text + optional candidate ids +
6
+ * limit). The SQLite adapter compiles that plan into one prepared
7
+ * statement — CEL filter + scope regex over the RE2-backed regexp UDF +
8
+ * sigil `NOT LIKE` + FTS5 MATCH + `IN (…)` whitelist + ORDER BY / LIMIT.
9
+ *
10
+ * All user values land as positional `?` placeholders. The compiler
11
+ * appends parameters in the order they appear in the emitted SQL text so
12
+ * SQLite's positional binding matches.
13
+ */
14
+ import type { SearchPlan } from "../storage/search-plan.js";
15
+ export type CompiledSql = {
16
+ sql: string;
17
+ params: (string | number | bigint | null)[];
18
+ };
19
+ export declare function compileSearchPlan(plan: SearchPlan): CompiledSql;
@@ -0,0 +1,176 @@
1
+ /**
2
+ * SearchPlan → SQLite SQL compiler (m5-plan WS2).
3
+ *
4
+ * The kernel builds a `SearchPlan` (parsed CEL AST + scope groups +
5
+ * per-repo sigil groups + optional FTS text + optional candidate ids +
6
+ * limit). The SQLite adapter compiles that plan into one prepared
7
+ * statement — CEL filter + scope regex over the RE2-backed regexp UDF +
8
+ * sigil `NOT LIKE` + FTS5 MATCH + `IN (…)` whitelist + ORDER BY / LIMIT.
9
+ *
10
+ * All user values land as positional `?` placeholders. The compiler
11
+ * appends parameters in the order they appear in the emitted SQL text so
12
+ * SQLite's positional binding matches.
13
+ */
14
+ import { globToRegexSource } from "../kernel/auth/glob.js";
15
+ import { compileFilter } from "./compile-filter.js";
16
+ export function compileSearchPlan(plan) {
17
+ const params = [];
18
+ const clauses = ["versions.next_id IS NULL"];
19
+ // repo_id IN (…) — repo scope, always present (kernel guarantees non-empty).
20
+ const repoPh = plan.repo_ids.map(() => "?").join(",");
21
+ clauses.push(`versions.repo_id IN (${repoPh})`);
22
+ for (const id of plan.repo_ids)
23
+ params.push(id);
24
+ // Optional CEL filter. Graph predicates ($in_static etc.) need to apply
25
+ // the caller's visibility filter — BOTH read scope AND sigil-exclusion —
26
+ // to the OTHER endpoint of an edge (§11.2 "visible graph = readable
27
+ // graph"), so hand the filter compiler builders bound to this plan.
28
+ if (plan.filter_ast) {
29
+ const compiled = compileFilter(plan.filter_ast, {
30
+ graphScope: (alias) => scopeFragmentForAlias(plan.scope, alias),
31
+ graphSigils: (alias) => compileSigilExclusion(plan.sigils, alias),
32
+ });
33
+ clauses.push(`(${compiled.sql})`);
34
+ for (const p of compiled.params)
35
+ params.push(p);
36
+ }
37
+ // Sigil exclusion.
38
+ const sigilFrag = compileSigilExclusion(plan.sigils, "versions");
39
+ if (sigilFrag.sql.length > 0) {
40
+ clauses.push(sigilFrag.sql);
41
+ for (const p of sigilFrag.params)
42
+ params.push(p);
43
+ }
44
+ // Scope filter.
45
+ if (plan.scope.kind === "groups") {
46
+ const scopeFrag = compileScopeGroups(plan.scope.groups, "versions");
47
+ if (scopeFrag.sql.length > 0) {
48
+ clauses.push(`(${scopeFrag.sql})`);
49
+ for (const p of scopeFrag.params)
50
+ params.push(p);
51
+ }
52
+ else {
53
+ // No scope grants → no rows (silent-drop per §8.2).
54
+ clauses.push("0");
55
+ }
56
+ }
57
+ // allow_all: no clause added.
58
+ // deny_all: caller short-circuits before compiling.
59
+ // Candidate whitelist (rank branch).
60
+ if (plan.candidate_ids && plan.candidate_ids.length > 0) {
61
+ const idPh = plan.candidate_ids.map(() => "?").join(",");
62
+ clauses.push(`versions.id IN (${idPh})`);
63
+ for (const id of plan.candidate_ids)
64
+ params.push(id);
65
+ }
66
+ // Candidate DOCUMENT-id whitelist (graph read surface). Restricts to live
67
+ // versions of these documents so a BFS round's visibility check is one pass.
68
+ if (plan.candidate_document_ids && plan.candidate_document_ids.length > 0) {
69
+ const docPh = plan.candidate_document_ids.map(() => "?").join(",");
70
+ clauses.push(`versions.document_id IN (${docPh})`);
71
+ for (const id of plan.candidate_document_ids)
72
+ params.push(id);
73
+ }
74
+ const cols = `versions.id, versions.document_id, versions.repo_id,
75
+ versions.prev_id, versions.next_id, versions.path,
76
+ versions.frontmatter_raw, versions.frontmatter,
77
+ versions.body, versions.author, versions.created_at,
78
+ versions.content_hash`;
79
+ let sql;
80
+ if (plan.text !== undefined) {
81
+ clauses.push("versions.id = fts_docs.rowid");
82
+ clauses.push("fts_docs MATCH ?");
83
+ params.push(plan.text);
84
+ sql = `SELECT ${cols}
85
+ FROM versions, fts_docs
86
+ WHERE ${clauses.join(" AND ")}
87
+ ORDER BY bm25(fts_docs)
88
+ LIMIT ?`;
89
+ }
90
+ else {
91
+ sql = `SELECT ${cols}
92
+ FROM versions
93
+ WHERE ${clauses.join(" AND ")}
94
+ ORDER BY versions.created_at DESC, versions.id DESC
95
+ LIMIT ?`;
96
+ }
97
+ params.push(plan.limit);
98
+ return { sql, params };
99
+ }
100
+ function compileSigilExclusion(groups, alias) {
101
+ const clauses = [];
102
+ const params = [];
103
+ for (const group of groups) {
104
+ if (group.sigils.length === 0)
105
+ continue;
106
+ if (group.repo_ids.length === 0)
107
+ continue;
108
+ const repoPh = group.repo_ids.map(() => "?").join(",");
109
+ for (const id of group.repo_ids)
110
+ params.push(id);
111
+ const sigilClauses = [];
112
+ for (const sigil of group.sigils) {
113
+ const escaped = sigil.replace(/[\\%_]/g, (ch) => `\\${ch}`);
114
+ sigilClauses.push(`${alias}.path NOT LIKE ? ESCAPE '\\'`);
115
+ sigilClauses.push(`${alias}.path NOT LIKE ? ESCAPE '\\'`);
116
+ params.push(`${escaped}%`);
117
+ params.push(`%/${escaped}%`);
118
+ }
119
+ clauses.push(`(${alias}.repo_id NOT IN (${repoPh}) OR (${sigilClauses.join(" AND ")}))`);
120
+ }
121
+ if (clauses.length === 0)
122
+ return { sql: "", params: [] };
123
+ return { sql: clauses.join(" AND "), params };
124
+ }
125
+ function compileScopeGroups(groups, alias) {
126
+ const scopeSqls = [];
127
+ const scopeParams = [];
128
+ for (const group of groups) {
129
+ if (group.globs.length === 0)
130
+ continue;
131
+ if (group.repos === "*") {
132
+ const globExpr = globsToLastMatchCaseSql(group.globs, scopeParams, alias);
133
+ scopeSqls.push(`(${globExpr})`);
134
+ }
135
+ else if (group.repos.length > 0) {
136
+ const ph = group.repos.map(() => "?").join(",");
137
+ for (const id of group.repos)
138
+ scopeParams.push(id);
139
+ const globExpr = globsToLastMatchCaseSql(group.globs, scopeParams, alias);
140
+ scopeSqls.push(`(${alias}.repo_id IN (${ph}) AND (${globExpr}))`);
141
+ }
142
+ }
143
+ return { sql: scopeSqls.join(" OR "), params: scopeParams };
144
+ }
145
+ function globsToLastMatchCaseSql(globs, params, alias) {
146
+ let expr = "0";
147
+ const localParams = [];
148
+ for (let i = 0; i < globs.length; i++) {
149
+ const g = globs[i];
150
+ const negated = g.startsWith("!");
151
+ const raw = negated ? g.slice(1) : g;
152
+ const regex = `^${globToRegexSource(raw)}$`;
153
+ localParams.unshift(regex);
154
+ expr = `(CASE WHEN regexp(?, ${alias}.path) THEN ${negated ? "0" : "1"} ELSE ${expr} END)`;
155
+ }
156
+ for (const p of localParams)
157
+ params.push(p);
158
+ return expr;
159
+ }
160
+ /**
161
+ * Scope predicate for an aliased `versions` row inside a graph subquery
162
+ * (links-plan.md §5 decision 5 — the visible graph equals the readable
163
+ * graph). `allow_all` → always true; `deny_all` → always false; `groups`
164
+ * → the same OR-of-globs the outer query applies, retargeted to `alias`.
165
+ */
166
+ function scopeFragmentForAlias(scope, alias) {
167
+ if (scope.kind === "allow_all")
168
+ return { sql: "1", params: [] };
169
+ if (scope.kind === "deny_all")
170
+ return { sql: "0", params: [] };
171
+ const frag = compileScopeGroups(scope.groups, alias);
172
+ return frag.sql.length > 0
173
+ ? { sql: `(${frag.sql})`, params: frag.params }
174
+ : { sql: "0", params: [] };
175
+ }
176
+ //# sourceMappingURL=compile-sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-sqlite.js","sourceRoot":"","sources":["../../src/storage-sqlite/compile-sqlite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ -- mrplex schema (SQLite) — see docs/design.md §3.2.
2
+ --
3
+ -- Fresh no-auth baseline: the pre-noauth migration chain (0001 init, 0002
4
+ -- admin-token flag, 0003 FTS, 0004 casefold, 0005 links) is collapsed into
5
+ -- this single file. There is no users or api_tokens table — mrplex trusts
6
+ -- its caller (design §8); authorship is one opaque string on versions.author.
7
+ -- Pre-noauth databases are refused at open (adapter probes for api_tokens).
8
+ -- Future migrations resume at 0002.
9
+ --
10
+ -- Dialect notes for SQLite:
11
+ -- * JSON columns are TEXT with a CHECK (json_valid(...)) constraint.
12
+ -- * Timestamps are TEXT in ISO 8601 UTC (per §6.4 wire types).
13
+ -- * Case-folded identity runs off derived *_norm columns computed in the
14
+ -- kernel (normalizeKey = NFC + locale-invariant lowercase). Storage stays
15
+ -- case- and form-preserving; the key never crosses the wire (§3.5.1).
16
+
17
+ create table repos (
18
+ id integer primary key,
19
+ slug text not null unique,
20
+ slug_norm text not null,
21
+ path_config text check (path_config is null or json_valid(path_config)),
22
+ link_config text check (link_config is null or json_valid(link_config)),
23
+ created_at text not null
24
+ );
25
+
26
+ -- Case-insensitive slug uniqueness (§3.5.1).
27
+ create unique index repos_slugnorm_uidx on repos(slug_norm);
28
+
29
+ create table documents (
30
+ id integer primary key,
31
+ repo_id integer not null references repos(id)
32
+ );
33
+
34
+ create index documents_repo_id_idx on documents(repo_id);
35
+
36
+ create table versions (
37
+ id integer primary key,
38
+ document_id integer not null references documents(id),
39
+ repo_id integer not null references repos(id),
40
+ prev_id integer references versions(id),
41
+ next_id integer references versions(id),
42
+ path text not null,
43
+ path_norm text not null,
44
+ frontmatter_raw text not null,
45
+ frontmatter text not null check (json_valid(frontmatter)),
46
+ body text not null,
47
+ author text not null, -- opaque caller-supplied string
48
+ created_at text not null
49
+ );
50
+
51
+ -- exactly one current version per document (design §3.2)
52
+ create unique index versions_document_current_uidx
53
+ on versions(document_id) where next_id is null;
54
+
55
+ -- at most one live document per path in a repo (design §3.2)
56
+ create unique index versions_repo_path_current_uidx
57
+ on versions(repo_id, path) where next_id is null;
58
+
59
+ -- history walks: iterating a document's versions by chain
60
+ create index versions_document_id_idx on versions(document_id);
61
+
62
+ -- One live document per NORMALIZED path in a repo (case-insensitive twin of
63
+ -- versions_repo_path_current_uidx). Live rows only; deleted rows exempt (§3.5.1).
64
+ create unique index versions_repo_pathnorm_current_uidx
65
+ on versions(repo_id, path_norm) where next_id is null;
66
+
67
+ create table chunks (
68
+ version_id integer not null references versions(id),
69
+ ix integer not null,
70
+ text text not null,
71
+ text_hash text not null,
72
+ model text not null,
73
+ embedding blob,
74
+ primary key (version_id, ix)
75
+ );
76
+
77
+ create index chunks_hash_model_idx on chunks(text_hash, model);
78
+
79
+ create table embedding_backlog (
80
+ version_id integer primary key references versions(id),
81
+ attempts integer not null,
82
+ last_error text,
83
+ next_retry_at text
84
+ );
85
+
86
+ -- FTS5 index over versions.body — design §5.1, §7.2. External-content
87
+ -- virtual table so we don't duplicate body storage. Triggers mirror
88
+ -- INSERT/DELETE on versions; fts_search filters next_id IS NULL at query time.
89
+ create virtual table fts_docs using fts5(
90
+ body,
91
+ content='versions',
92
+ content_rowid='id',
93
+ tokenize='porter unicode61 remove_diacritics 1'
94
+ );
95
+
96
+ create trigger fts_docs_ai after insert on versions begin
97
+ insert into fts_docs(rowid, body) values (new.id, new.body);
98
+ end;
99
+
100
+ create trigger fts_docs_ad after delete on versions begin
101
+ insert into fts_docs(fts_docs, rowid, body) values('delete', old.id, old.body);
102
+ end;
103
+
104
+ -- Links derived index — design §11.2. One row per outbound STATIC edge from
105
+ -- the live corpus, doc-keyed. Binds to target document identity (target_id),
106
+ -- so moves never churn inbound edges; dangling rows (target_id NULL) rebind
107
+ -- when a document appears at target_norm's folded path. Never source of truth.
108
+ create table links (
109
+ repo_id integer not null references repos(id),
110
+ source_id integer not null references documents(id),
111
+ ord integer not null,
112
+ field text not null,
113
+ target_raw text not null,
114
+ target_norm text not null,
115
+ target_id integer references documents(id),
116
+ primary key (source_id, ord)
117
+ );
118
+
119
+ -- Backlinks direction (others → me). Partial — danglers served by target_norm.
120
+ create index links_target_id_idx on links(target_id) where target_id is not null;
121
+
122
+ -- Dangling re-resolution (§11.2): repo-scoped, folded-target lookup.
123
+ create index links_dangling_idx on links(repo_id, target_norm) where target_id is null;
@@ -0,0 +1,7 @@
1
+ -- $content_hash intrinsic (sync/history plan §2.3).
2
+ --
3
+ -- Nullable so the migration is instant; null means "not yet backfilled" and
4
+ -- reads compute on the fly during the transition. version_insert computes the
5
+ -- value inside the same tx as the insert, so no new row lacks its hash.
6
+ alter table versions add column content_hash text;
7
+ create index versions_content_hash_idx on versions(content_hash);
@@ -0,0 +1,6 @@
1
+ import type Database from "better-sqlite3";
2
+ /**
3
+ * Apply pending migrations. Idempotent and forward-only (design §7.2.2).
4
+ * Progress is tracked via `PRAGMA user_version`.
5
+ */
6
+ export declare function migrate(db: Database.Database): void;
@@ -0,0 +1,41 @@
1
+ import { readFileSync, readdirSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const MIGRATIONS_DIR = dirname(fileURLToPath(import.meta.url));
5
+ function loadMigrations() {
6
+ const files = readdirSync(MIGRATIONS_DIR)
7
+ .filter((f) => f.endsWith(".sql"))
8
+ .sort();
9
+ return files.map((name) => {
10
+ const match = name.match(/^(\d+)_.+\.sql$/);
11
+ if (!match || !match[1]) {
12
+ throw new Error(`migration file "${name}" must match <NNNN>_<name>.sql`);
13
+ }
14
+ const version = Number.parseInt(match[1], 10);
15
+ const sql = readFileSync(join(MIGRATIONS_DIR, name), "utf8");
16
+ return { version, name, sql };
17
+ });
18
+ }
19
+ /**
20
+ * Apply pending migrations. Idempotent and forward-only (design §7.2.2).
21
+ * Progress is tracked via `PRAGMA user_version`.
22
+ */
23
+ export function migrate(db) {
24
+ const migrations = loadMigrations();
25
+ const currentRow = db.pragma("user_version", { simple: true });
26
+ for (const m of migrations) {
27
+ if (m.version <= currentRow)
28
+ continue;
29
+ db.exec("begin");
30
+ try {
31
+ db.exec(m.sql);
32
+ db.pragma(`user_version = ${m.version}`);
33
+ db.exec("commit");
34
+ }
35
+ catch (err) {
36
+ db.exec("rollback");
37
+ throw new Error(`migration ${m.name} failed: ${err.message}`);
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage-sqlite/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAI/D,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjC,IAAI,EAAE,CAAC;IACV,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,gCAAgC,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EAAqB;IAC3C,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAW,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU;YAAE,SAAS;QACtC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * sqlite-vec extension loading + float32 BLOB encode/decode.
3
+ *
4
+ * Design §7.2.1 pins SQLite vector search at brute-force in v1 (indexed
5
+ * ANN belongs to M5's pgvector adapter). This module keeps that posture:
6
+ * • Vectors live in `chunks.embedding` as raw little-endian float32
7
+ * BLOBs — one column, one representation, one round-trip cost.
8
+ * • Distance is computed by sqlite-vec's `vec_distance_cosine` UDF over
9
+ * the join with `versions.next_id IS NULL`; no `vec0` virtual table
10
+ * (would be a shadow store to keep in sync with the version chain).
11
+ *
12
+ * m4-plan §5 decision 3.
13
+ */
14
+ import type Database from "better-sqlite3";
15
+ /**
16
+ * Load the sqlite-vec loadable extension into a better-sqlite3 handle.
17
+ * Idempotent per connection — safe to call multiple times.
18
+ *
19
+ * m4-plan risks: extension loading is the platform risk. If a CI cell
20
+ * lacks the prebuilt binary for its (arch, glibc) combination, this
21
+ * throws at open() rather than at query time — visible failure, not
22
+ * silent degradation.
23
+ */
24
+ export declare function loadSqliteVec(db: Database.Database): void;
25
+ /**
26
+ * Encode a JS number array (or Float32Array) as a little-endian float32
27
+ * BLOB — the wire format sqlite-vec's distance UDFs expect.
28
+ *
29
+ * Node Buffers back their underlying ArrayBuffer natively little-endian
30
+ * on every platform mrplex supports, but we pin the byteOrder explicitly
31
+ * so a future big-endian read (e.g. from a non-JS reader — see m4-plan
32
+ * risks) has a documented contract to check against.
33
+ */
34
+ export declare function encodeVectorBlob(vector: readonly number[] | Float32Array): Buffer;
35
+ /**
36
+ * Decode a float32 BLOB back to a Float32Array. Length must be a
37
+ * multiple of 4; otherwise the BLOB was written by something that
38
+ * disagreed with §chunks storage — throw rather than silently truncate.
39
+ */
40
+ export declare function decodeVectorBlob(blob: Buffer | Uint8Array): Float32Array;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * sqlite-vec extension loading + float32 BLOB encode/decode.
3
+ *
4
+ * Design §7.2.1 pins SQLite vector search at brute-force in v1 (indexed
5
+ * ANN belongs to M5's pgvector adapter). This module keeps that posture:
6
+ * • Vectors live in `chunks.embedding` as raw little-endian float32
7
+ * BLOBs — one column, one representation, one round-trip cost.
8
+ * • Distance is computed by sqlite-vec's `vec_distance_cosine` UDF over
9
+ * the join with `versions.next_id IS NULL`; no `vec0` virtual table
10
+ * (would be a shadow store to keep in sync with the version chain).
11
+ *
12
+ * m4-plan §5 decision 3.
13
+ */
14
+ import * as sqliteVec from "sqlite-vec";
15
+ /**
16
+ * Load the sqlite-vec loadable extension into a better-sqlite3 handle.
17
+ * Idempotent per connection — safe to call multiple times.
18
+ *
19
+ * m4-plan risks: extension loading is the platform risk. If a CI cell
20
+ * lacks the prebuilt binary for its (arch, glibc) combination, this
21
+ * throws at open() rather than at query time — visible failure, not
22
+ * silent degradation.
23
+ */
24
+ export function loadSqliteVec(db) {
25
+ sqliteVec.load(db);
26
+ }
27
+ /**
28
+ * Encode a JS number array (or Float32Array) as a little-endian float32
29
+ * BLOB — the wire format sqlite-vec's distance UDFs expect.
30
+ *
31
+ * Node Buffers back their underlying ArrayBuffer natively little-endian
32
+ * on every platform mrplex supports, but we pin the byteOrder explicitly
33
+ * so a future big-endian read (e.g. from a non-JS reader — see m4-plan
34
+ * risks) has a documented contract to check against.
35
+ */
36
+ export function encodeVectorBlob(vector) {
37
+ const arr = vector instanceof Float32Array ? vector : Float32Array.from(vector);
38
+ // Copy into a fresh Buffer so callers holding the Float32Array can't
39
+ // observe mutations through the BLOB later.
40
+ const buf = Buffer.alloc(arr.byteLength);
41
+ for (let i = 0; i < arr.length; i++) {
42
+ buf.writeFloatLE(arr[i], i * 4);
43
+ }
44
+ return buf;
45
+ }
46
+ /**
47
+ * Decode a float32 BLOB back to a Float32Array. Length must be a
48
+ * multiple of 4; otherwise the BLOB was written by something that
49
+ * disagreed with §chunks storage — throw rather than silently truncate.
50
+ */
51
+ export function decodeVectorBlob(blob) {
52
+ const buf = Buffer.isBuffer(blob) ? blob : Buffer.from(blob);
53
+ if (buf.byteLength % 4 !== 0) {
54
+ throw new Error(`vec: BLOB length ${buf.byteLength} is not a multiple of 4 (expected float32)`);
55
+ }
56
+ const out = new Float32Array(buf.byteLength / 4);
57
+ for (let i = 0; i < out.length; i++) {
58
+ out[i] = buf.readFloatLE(i * 4);
59
+ }
60
+ return out;
61
+ }
62
+ //# sourceMappingURL=vec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec.js","sourceRoot":"","sources":["../../src/storage-sqlite/vec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAExC;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwC;IACvE,MAAM,GAAG,GAAG,MAAM,YAAY,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChF,qEAAqE;IACrE,4CAA4C;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,UAAU,4CAA4C,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The one persistent client state: a single cursor (sync/history plan §4.2).
3
+ * `<root>/.mrplex/sync.json` holds `{ server | database, repo,
4
+ * last_synced_version_id }`, meaning "every change at or before this position
5
+ * in the log is reflected on disk." The source is recorded as exactly one of
6
+ * `server` (remote sync) or `database` (local sync) — they are mutually
7
+ * exclusive, mirroring the CLI's --server/--database gate. In-vault so it
8
+ * travels with the vault it describes. There is no per-file manifest or
9
+ * tombstone journal.
10
+ */
11
+ export type SyncCursor = {
12
+ server?: string;
13
+ database?: string;
14
+ repo?: string;
15
+ last_synced_version_id: string;
16
+ };
17
+ /**
18
+ * Resolve the cursor's source fields (§4.2). The source is exactly one of
19
+ * `server` (remote sync) or `database` (local sync); a set `server` always
20
+ * wins, otherwise a set `database` is recorded. When neither is supplied on
21
+ * this run, carry forward whatever the existing marker held so an incidental
22
+ * re-run (e.g. via a different code path) doesn't strip provenance.
23
+ */
24
+ export declare function sourceFields(server: string | undefined, database: string | undefined, existing: SyncCursor | null): Pick<SyncCursor, "server" | "database">;
25
+ /**
26
+ * Read the cursor file, or null when absent (marker absent → full index
27
+ * reconciliation, §4.9). A malformed file throws — the caller must not silently
28
+ * treat corruption as "start fresh."
29
+ */
30
+ export declare function readCursor(root: string): Promise<SyncCursor | null>;
31
+ /**
32
+ * Write the cursor atomically (temp + rename) so a crash mid-write can't leave
33
+ * a torn file. The cursor advances only after a batch's filesystem effects
34
+ * complete (§4.3), so this is called at safe points.
35
+ */
36
+ export declare function writeCursor(root: string, cursor: SyncCursor): Promise<void>;