diff --git a/CHANGELOG.md b/CHANGELOG.md index 595e08a3..65fdc236 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,42 @@ All notable changes to MeMesh are documented here. ### Added +- **A reindex no longer deletes anything until the new index is complete.** + Rebuilding the vector index used to drop every stored embedding first and + then refill — so a run that died part way (rate limit, dropped connection, + `Ctrl-C`) left the graph half unsearchable, and on a paid API the + embeddings it had already produced had to be bought again. The new index is + now built in a staging generation beside the live one, which keeps answering + queries throughout, and replaces it in a single transaction only once every + entity that should have a vector has one and nothing failed. A failed run + changes nothing: the live index is byte-for-byte what it was, never a + half-new mix whose distances no longer compare. The embeddings already + produced are kept, so running `memesh reindex` again resumes and asks the + provider only for what it did not reach — a generation started by a + different provider or at a different width is discarded rather than + resumed, because vectors from two embedding spaces must not share an index. + + Switching embedding provider needs no special flag any more — change the + provider and run `memesh reindex` (see **Removed** for the retired + `--vectors`). The + `DROP` is gone from the database-open path entirely — a dimension + disagreement now keeps the working index and records that a rebuild is + owed. Three sqlite-vec behaviours were measured before this was designed + rather than assumed: a `vec0` table cannot be renamed (it keeps four shadow + tables the rename does not touch, leaving the table unreadable), two `vec0` + tables of different widths coexist, and `DROP`+`CREATE`+copy inside one + transaction really does roll back — verified on the row data through a + fresh connection, not on the table name. + +- **Embedding requests are bounded.** The provider calls had no timeout, no + retry and no backoff, so a provider that accepted the connection and never + answered hung a whole rebuild indefinitely, and a 429 was indistinguishable + from a 500 or a 401 — hitting a rate limit produced the same silent `null` + as a bad API key. Now: 30 seconds per request, up to three attempts for a + 429 or 5xx honouring `Retry-After`, and an immediate stop naming the status + for a 401/403/404, which is configuration rather than weather and where + retrying only spends the user's rate budget on a certainty. + - **The graph has two layers: the work, and the evidence under it.** The Knowledge Graph tab opens on the work layer — decisions, lessons, plans, milestones (`WORK_LAYER_TYPES`, the one whitelist in @@ -109,6 +145,70 @@ All notable changes to MeMesh are documented here. constantly surfaces for review. Guard failure of any kind degrades to silence — the guard system can never block or break the user's work. +### Removed + +- **`memesh reindex --vectors` is removed. Scripts that pass it will fail** + with `error: unknown option '--vectors'` and exit 1. The flag existed only to + grant consent for dropping every stored embedding before the refill began, + and generations removed that step, so there is no longer any consent to ask + for. To rebuild the index at a new width — which is what the flag was used + for — change the embedder in your config and run plain `memesh reindex`. It + is rejected rather than accepted as a no-op, and rejecting it destroys + nothing. + +### Fixed + +- **A rebuild no longer discards a memory captured while it ran.** The swap + installed exactly the staging index, and every writer other than the rebuild + itself — the seven capture hooks, `remember`, the dreamer, the MCP server — + writes the live index, which the rebuild had snapshotted before it started. + So a memory captured mid-rebuild lost its vector, and one whose text was + *edited* mid-rebuild had its fresh vector silently replaced by the older + staged one, which the missing-vector count cannot detect because the row is + present. Rows still active and absent from staging are now carried across the + swap. Conversely a memory deleted mid-rebuild could be resurrected, because + `forget` clears the live row and knows nothing about a staging index; staged + rows for entities that are no longer active are now pruned before the swap. +- **`memesh doctor` can no longer report a healthy install over a graph that is + owed vectors.** The swap deleted the reindex-needed marker itself, which + pre-empted the check that runs afterwards against the finished index — so a + rebuild that completed while vectors were still missing printed "the + reindex-needed flag was left set" and then left nothing set. The marker now + has one owner, the post-rebuild measurement, which either clears it or writes + it. +- **Semantic search being off during a width change is reported instead of + hidden.** A query embedded at the new width cannot be matched against an index + built at the old one; sqlite-vec raised, the error was swallowed into an empty + result, and "no matches" is indistinguishable from "no search happened" — so + `recall` reported `mode: "hybrid"`, `degraded: false` for a vector side that + answered nothing, for the entire window between switching provider and + finishing the rebuild. It now reports `mode: "fts"` and `degraded: true`, and + the message printed on open says semantic search is off until the rebuild + finishes rather than claiming the index "still answers queries". +- **A rebuild no longer costs concurrent writers their captures.** The swap + copies every embedding inside one transaction — that copy *is* the atomicity + guarantee, because a `vec0` table cannot be renamed — and the copy is O(rows): + measured at 5.4s for 20,000 vectors and 9.1s for 30,000. Against the 5-second + busy timeout that meant a rebuild on a graph past roughly 16,500 vectors made + concurrent writers *fail* rather than wait, losing hook captures. The busy + timeout is now 30 seconds, which covers a graph around 100,000 vectors. +- **Two runtime messages told users to run the removed `--vectors` flag** on a + dimension mismatch — the exact situation the new mechanism exists to handle — + so the only remedy offered exited 1. Both now name `memesh reindex`. A test + scans every source file that prints advice and fails on any `memesh + --flag` the CLI does not register; it immediately caught a second, older + instance, `memesh doctor --verbose`, a flag that never existed. +- **An embedding provider can no longer redirect the request carrying your + memory text.** The provider fetch used the default redirect behaviour; a 307 + forwards the POST body to the redirect target, and the Ollama base URL is an + unvalidated environment variable. Redirects are now refused. +- **A failed read of the staging index is no longer reported as "nothing is + staged".** That number decides whether a finished rebuild is promoted and + which entities a resume re-buys from the provider, so a locked database or a + corrupt shadow table must not arrive as an empty result. The staging index's + start time also survives a resume now, instead of being overwritten on every + attempt. + ### Changed - **Dashboard design system: VIVARIUM supersedes Precision Engineer.** The diff --git a/dist/core/doctor.js b/dist/core/doctor.js index c127527d..d2adf1df 100644 --- a/dist/core/doctor.js +++ b/dist/core/doctor.js @@ -384,7 +384,7 @@ function inspectHookActivity(openDatabaseImpl, closeDatabaseImpl, existsSyncImpl } catch (err) { const detail = err instanceof Error ? err.message : String(err); - return createCheck('hook-activity', TITLE, 'fail', `Could not read hook activity from the database: ${detail}. Capture health is unknown, which is not the same as healthy.`, 'Run `memesh doctor --verbose` for the full error, and check that ~/.memesh is readable and not out of disk.', { code: 'hook-activity.query-failed', params: { detail } }); + return createCheck('hook-activity', TITLE, 'fail', `Could not read hook activity from the database: ${detail}. Capture health is unknown, which is not the same as healthy.`, 'The error is quoted above. Check that ~/.memesh is readable and that the disk is not full.', { code: 'hook-activity.query-failed', params: { detail } }); } finally { try { diff --git a/dist/core/doctor.js.map b/dist/core/doctor.js.map index aa598eca..cc62041d 100644 --- a/dist/core/doctor.js.map +++ b/dist/core/doctor.js.map @@ -1 +1 @@ -{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,yBAAyB,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAC1H,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAuB,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAmIxD,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC,MAAM,mBAAmB,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAIhG,MAAM,mBAAmB,GAAG;IAM1B,cAAc;IACd,iBAAiB;CAClB,CAAC;AAOF,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,SAAS,eAAe,CAAC,OAAe;IAKtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,GAAG,CAAC,OAAO,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,OAAO;YAAE,SAAS;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,yBAAyB,CAChC,WAAmB,EACnB,cAAoC,EACpC,gBAAwC;IAExC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QAGjC,OAAO,WAAW,CAChB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,8GAA8G,CAC/G,CAAC;IACJ,CAAC;IACD,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAChB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC/E,SAAS,EACT,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAC3G,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAA2C,EAAE,CAAC;IACzD,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,eAAe,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,mBAAmB,EAAE,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAEP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,WAAW,CAChB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,OAAO,mBAAmB,CAAC,MAAM,2CAA2C,YAAY,IAAI,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,KAAK;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aAClE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,2BAA2B,YAAY,MAAM,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,WAAW,CAChB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB,+EAA+E,mBAAmB,gDAAgD,EAClJ,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,CACtG,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,SAAS,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW,CAClB,EAAU,EACV,KAAa,EACb,MAAyB,EACzB,OAAe,EACf,GAAY,EAKZ,IAAkE,EAClE,KAA4B;IAE5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC5F,CAAC;AAWD,SAAS,UAAU,CAAC,EAAU,EAAE,KAAa,EAAE,OAAe,EAAE,GAAY;IAC1E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,aAAa,CACpB,QAAgB,EAChB,gBAAwC;IAExC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAmB,EAAE,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;SAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAcD,SAAS,iBAAiB,CACxB,cAAoC,EACpC,gBAAwC,EACxC,iBAAuC;IAEvC,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,WAAW,CAChB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,uBAAuB,UAAU,iEAAiE,EAClG,mGAAmG,CACpG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAW,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,WAAW,CAChB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,GAAG,UAAU,oEAAoE,EACjF,iBAAiB,UAAU,8BAA8B,EACzD,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAClE,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,gDAAgD,CAAC,CAAC;IAChH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,WAAW,CAChB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,GAAG,UAAU,iCAAiC,GAAG,mGAAmG,EACpJ,gEAAgE,UAAU,IAAI,UAAU,MAAM,EAC9F,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,WAAmB,EACnB,cAAoC,EACpC,gBAAwC;IAExC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,uBAAuB,EACvB,2DAA2D,EAC3D,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAC/B,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,8BAA8B,EAC9B,OAAO,OAAO,qDAAqD,EACnE,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAI,MAAM,CAAC,KAAK,CAAC,UAAqC,EAAE,MAAgC,CAAC;IACrG,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,+DAA+D,EAC/D,2EAA2E,EAC3E,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAChC,CAAC;IACJ,CAAC;IAUD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,IAAI,KAAK,EAAE,CAAC;QAGV,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,sBAAsB,KAAK,qFAAqF,EAChH,mHAAmH,EACnH,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,uFAAuF,CACxF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAuB,EAAE,WAAmB;IAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,KAAmF,CAAC;IAC9G,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACrC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;oBAAE,SAAS;gBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CACzB,WAAmB,EACnB,QAAyB,EACzB,cAAoC,EACpC,gBAAwC,EACxC,YAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,WAAW,CACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,8BAA8B,EAC9B,kEAAkE,EAClE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CACjC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,WAAW,CACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,qCAAqC,EACrC,OAAO,SAAS,gDAAgD,EAChE,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CACnE;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAE,MAAM,CAAC,KAAK,CAAC,KAAgC,IAAI,EAAE,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,WAAW,CACX,cAAc,EACd,cAAc,EACd,MAAM,EACN,oDAAoD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC9E,6DAA6D,EAC7D,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CACnF;QACD,CAAC,CAAC,WAAW,CACX,cAAc,EACd,cAAc,EACd,MAAM,EACN,oCAAoC,SAAS,CAAC,MAAM,yBAAyB,CAC9E,CAAC;IAEJ,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAOtE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,WAAW;YACX,WAAW,CACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,uFAAuF,EACvF,6DAA6D,EAC7D,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B;SACF,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACvF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,WAAW;YACX,WAAW,CACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,yBAAyB,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACvG,iEAAiE,EACjE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CACjI;SACF,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YAC3C,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,WAAW;gBACX,WAAW,CACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,oCAAoC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACjH,iGAAiG,EACjG,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CACvI;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,WAAW,CACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,OAAO,WAAW,CAAC,MAAM,4BAA4B,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,CACtG;KACF,CAAC;AACJ,CAAC;AAeD,SAAS,iBAAiB,CACxB,cAAoC,EACpC,gBAAwC,EACxC,SAAiB,EACjB,cAA+B,EAC/B,oBAA6B;IAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC9D,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAiBhC,IAAI,cAAc,KAAK,oBAAoB,EAAE,CAAC;YAC5C,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,6IAA6I,CAC9I,CAAC;QACJ,CAAC;QASD,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC9C,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,0JAA0J,CAC3J,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,0GAA0G,EAC1G,iFAAiF,EACjF,EAAE,IAAI,EAAE,uBAAuB,EAAE,EACjC,eAAe,CAChB,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,2BAA2B,UAAU,iBAAiB,EACtD,sDAAsD,EACtD,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAKrB,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,4DAA4D,EAC5D,gCAAgC,EAChC,EAAE,IAAI,EAAE,8BAA8B,EAAE,CACzC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,+BAA+B,MAAM,CAAC,aAAa,sDAAsD,EACzG,gCAAgC,EAChC,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,GAAG,MAAM,CAAC,aAAa,2BAA2B,EAClD,+EAA+E,EAC/E,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CACzF,CAAC;IACJ,CAAC;IAOD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAI,cAAc,CAAC,KAA6C,CAAC,KAAK,CAAC;IAClF,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,SAAS;YACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAI,KAA+B,CAAC,KAAK,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAG,CAA6C,CAAC;oBAC1D,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;wBAAE,SAAS;oBACnC,aAAa,GAAG,IAAI,CAAC;oBACrB,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,cAAc,GAAG,IAAI,CAAC;oBAOrD,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;2BACxD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;wBAClE,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,iCAAiC,aAAa,qJAAqJ,EACnM,kGAAkG,EAClG,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CACxE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,uCAAuC,MAAM,CAAC,aAAa,gIAAgI,EAC3L,2CAA2C,EAC3C,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CACxF,CAAC;IACJ,CAAC;IAGD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAClF,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,0BAA0B,MAAM,CAAC,WAAW,oEAAoE,EAChH,iDAAiD,EACjD,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAChB,aAAa,EACb,8BAA8B,EAC9B,MAAM,EACN,YAAY,MAAM,CAAC,aAAa,YAAY,MAAM,CAAC,KAAK,IAAI,MAAM,cAAc,MAAM,CAAC,OAAO,IAAI,SAAS,IAAI,EAC/G,SAAS,EAGT,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,CAAC;AACJ,CAAC;AAwCD,SAAS,mBAAmB,CAC1B,gBAAqC,EACrC,iBAAuC,EACvC,iBAAuC,EAAE,CAAC,UAAU,EACpD,eAAmC,EAAE,CAAC,QAAQ,EAC9C,gBAAyB,IAAI;IAE7B,MAAM,KAAK,GAAG,eAAe,CAAC;IAU9B,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;IAC1C,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,qJAAqJ,EACrJ,SAAS,EACT,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,6MAA6M,EAC7M,SAAS,EACT,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,EAAE,GAAwB,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,EAAE,GAAG,gBAAgB,EAA6B,CAAC;QAKnD,MAAM,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CACvC,yEAAyE,CAC1E,CAAC,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,oBAAoB;YAC/B,CAAC,CAAC,EAAE,CAAC,OAAO,CACV,yCAAyC,CAC1C,CAAC,GAAG,EAAkD;YACvD,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAC1B;;;yDAGmD,CACpD,CAAC,GAAG,CAAC,gBAAgB,CAA+B,EAAE,CAAC,IAAI,CAAC,CAAC;QAI9D,MAAM,KAAK,GAAI,EAAE,CAAC,OAAO,CACvB,iEAAiE,CAClE,CAAC,GAAG,EAAoC,EAAE,KAAK,CAAC;QACjD,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAMtE,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC;QAShC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,QAAQ,GAAG,CAAC;gBAC/B,CAAC,CAAC,GAAG,QAAQ,SAAS,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,4BAA4B;gBAC9E,CAAC,CAAC,8EAA8E,CAAC;YAQnF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/E,OAAO,IAAI,mGAAmG;gBAC5G,8DAA8D,EAChE,+FAA+F,EAC/F,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAK7D,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,MAAyB,EAAE,EAAE,CAAC,WAAW,CACjF,eAAe,EAAE,KAAK,EAAE,MAAM,EAC9B,OAAO,IAAI,kBAAkB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;gBAC7D,+FAA+F,EACjG,0HAA0H,EAC1H,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAI5E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACrF,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,YAAY,CAAC,iBAAiB,CAAC,CAAC;YAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;oBAChB,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,qCAAqC,cAAc,CAAC,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;gBAC3G,CAAC;gBACD,IAAI,KAAK,IAAI,EAAE;oBAAE,OAAO,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAYhE,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAC1B;;;oFAG0E,CAC3E,CAAC,GAAG,EAAgC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,QAAQ,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAMjE,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,qCAAqC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,sMAAsM,EAC3Q,4JAA4J,EAC5J,EAAE,IAAI,EAAE,iCAAiC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/G,CAAC;YAOD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACtF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;gBAOtB,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;oBACnD,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,OAAO,YAAY,+BAA+B,cAAc,CAAC,WAAW,CAAC,6DAA6D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,4FAA4F,EAChQ,2IAA2I,EAC3I,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9G,CAAC;gBACD,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,OAAO,YAAY,kBAAkB,cAAc,CAAC,WAAW,CAAC,4BAA4B;oBAC1F,yFAAyF,YAAY,EAAE,CAAC,CAAC;YAC/G,CAAC;YACD,OAAO,KAAK,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC;YAS3E,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,6MAA6M,CAAC,CAAC;QACnN,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;YAInD,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,oGAAoG,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAChE,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;oBACxE,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,6FAA6F,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAA2D,CAAC;QACvE,CAAC;QAUD,MAAM,cAAc,GAAI,EAAE,CAAC,OAAO,CAChC;;;8BAGwB,CACzB,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAA+B,EAAE,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,0CAA0C,cAAc,sBAAsB,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,2GAA2G,EAC3N,2JAA2J,EAC3J,EAAE,IAAI,EAAE,gCAAgC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;YASnB,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,sJAAsJ,EACtJ,+IAA+I,EAC/I,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,gDAAgD,cAAc,CAAC,cAAc,CAAC,IAAI;YAChF,iGAAiG,EACnG,2IAA2I,EAC3I,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAC/C,mDAAmD,MAAM,gEAAgE,EACzH,4FAA4F,EAC5F,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,IAAI,EAAE;gBAAE,iBAAiB,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAmB,CAAC;IAClE,CAAC;AACH,CAAC;AAaD,SAAS,oBAAoB;IAC3B,IAAI,iBAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,iBAAiB,GAAG,UAAU,EAAE,CAAC,WAAW,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB,GAAG,SAAS,CAAC;IAChC,CAAC;IAGD,OAAO,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC;AAC3F,CAAC;AAgBD,MAAM,UAAU,UAAU,CAAC,eAAuB;IAGhD,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChD,CAAC;AAGD,SAAS,cAAc,CAAC,KAAoB;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACxF,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,uBAAuB,CAAC;IAC9C,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9C,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED,SAAS,yBAAyB;IAKhC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAI7D,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrG,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5E,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAyBD,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAErD,SAAS,yBAAyB,CAAC,WAAmB;IACpD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC;YASH,IAAI,OAAO,KAAK,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;gBACpD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,oBAAoB,OAAO,CAAC,OAAO,6BAA6B,EAAE,CAAC;YACpH,CAAC;YACD,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAGhC,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/F,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAClF,CAAC;AACH,CAAC;AAYD,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,KAAa;IAEb,MAAM,GAAG,GAAG,2CAA2C,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAsBD,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,cAAoC,EACpC,gBAAwC,EACxC,cAAsB,OAAO,CAAC,OAAO,EACrC,YAAoB,OAAO,CAAC,QAAQ,CAAC,OAAO,EAC5C,oBAAmC,gBAAgB;IAEnD,MAAM,KAAK,GACT,QAAQ,WAAW,SAAS,SAAS,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK;QAC/E,yBAAyB,iBAAiB,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC;IAElF,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAElE,CAAC;YACF,IAAI,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ;gBAAE,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IAGT,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,UAAU,CACf,cAAc,EACd,cAAc,EACd,GAAG,KAAK,sEAAsE,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,yBAAyB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5D,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,UAAU,CACf,cAAc,EACd,cAAc,EACd,GAAG,KAAK,kDAAkD,QAAQ,gBAAgB;YAChF,uDAAuD,CAC1D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,WAAW,CAChB,cAAc,EACd,cAAc,EACd,MAAM,EACN,GAAG,KAAK,+BAA+B,QAAQ,iCAAiC;YAC9E,iFAAiF,EACnF,mBAAmB,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,8CAA8C,EAC/F,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CACtG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAChB,cAAc,EACd,cAAc,EACd,MAAM,EACN,GAAG,KAAK,6BAA6B,QAAQ,GAAG,CACjD,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,WAAmB,EACnB,eAAqC,EACrC,YAAoF,yBAAyB;IAM7G,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,WAAW,CAChB,gBAAgB,EAChB,0BAA0B,EAC1B,MAAM,EACN,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAID,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/C,OAAO,WAAW,CAChB,gBAAgB,EAChB,0BAA0B,EAC1B,MAAM,EACN,iCAAiC,OAAO,CAAC,OAAO,mHAAmH,EACnK,8DAA8D,EAC9D,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAC9E,CAAC;IACJ,CAAC;IAYD,MAAM,gBAAgB,GAAG,sCAAsC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrF,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,WAAW,CAChB,gBAAgB,EAChB,0BAA0B,EAC1B,MAAM,EACN,wHAAwH,EACxH,uEAAuE,EACvE,EAAE,IAAI,EAAE,8BAA8B,EAAE,CACzC,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAChB,gBAAgB,EAChB,0BAA0B,EAC1B,MAAM,EACN,mCAAmC,MAAM,CAAC,OAAO,iFAAiF,EAClI,YAAY,WAAW,6BAA6B,EACpD,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAC9F,CAAC;AACJ,CAAC;AAkBD,SAAS,eAAe,CACtB,cAA6D,EAC7D,WAAmB,EACnB,sBAA2C;IAE3C,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAM3C,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1G,MAAM,mBAAmB,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC;IAE5D,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO,WAAW,CAChB,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,SAAS;YACP,CAAC,CAAC,0BAA0B,SAAS,kEAAkE;YACvG,CAAC,CAAC,4EAA4E,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,EAAE,CAAC;QACxB,OAAO,WAAW,CAChB,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,0BAA0B,SAAS,mCAAmC,WAAW,8CAA8C,CAChI,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,KAAK,oBAAoB,EAAE,CAAC;QAC5C,OAAO,WAAW,CAChB,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,oIAAoI;cAChI,8IAA8I,EAClJ,oIAAoI,EACpI,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAClC,CAAC;IACJ,CAAC;IAGD,OAAO,WAAW,CAChB,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,SAAS;QACP,CAAC,CAAC,0BAA0B,SAAS,GAAG;QACxC,CAAC,CAAC,6HAA6H,cAAc,wCAAwC,CACxL,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,WAAmB,EACnB,cAAoC;IAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAChF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,OAAO,WAAW,CAChB,WAAW,EACX,oBAAoB,EACpB,MAAM,EACN,uCAAuC,EACvC,+HAA+H,EAC/H,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAChB,WAAW,EACX,oBAAoB,EACpB,MAAM,EACN,uCAAuC,CACxC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,cAAsB,EACtB,kBAAyC,EACzC,cAAqE;IAErE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,WAAW,CAChB,eAAe,EACf,eAAe,EACf,MAAM,EACN,2GAA2G,EAC3G,8GAA8G,EAC9G,EAAE,IAAI,EAAE,wBAAwB,EAAE,CACnC,CAAC;IACJ,CAAC;IAeD,IAAI,MAAM,CAAC,wBAAwB,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,KAAK,cAAc;YAC5E,CAAC,CAAC,OAAO,MAAM,CAAC,aAAa,EAAE;YAC/B,CAAC,CAAC,EAAE,CAAC;QAOP,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa;eACxC,MAAM,CAAC,aAAa,KAAK,cAAc,CAAC;QAY7C,IAAI,GAAW,CAAC;QAChB,IAAI,cAAc,EAAE,aAAa,EAAE,CAAC;YAClC,GAAG,GAAG,gBAAgB;gBACpB,CAAC,CAAC,wBAAwB,MAAM,GAAG;gBACnC,CAAC,CAAC,uFAAuF,CAAC;QAC9F,CAAC;aAAM,IAAI,cAAc,EAAE,QAAQ,EAAE,CAAC;YACpC,GAAG,GAAG,cAAc,CAAC,QAAQ,GAAG,CAAC,gBAAgB;gBAC/C,CAAC,CAAC,oBAAoB,MAAM,CAAC,aAAa,GAAG;gBAC7C,CAAC,CAAC,oEAAoE,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,0DAA0D,CAAC;QACnE,CAAC;QACD,OAAO,WAAW,CAChB,eAAe,EACf,eAAe,EACf,MAAM,EACN,qBAAqB,cAAc,kCAAkC,MAAM,CAAC,kBAAkB,EAAE,EAChG,GAAG,EACH,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,EAAE,EAAE,CACnH,CAAC;IACJ,CAAC;IAKD,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;QACvC,OAAO,WAAW,CAChB,eAAe,EACf,eAAe,EACf,MAAM,EACN,2GAA2G,EAC3G,8GAA8G,EAC9G,EAAE,IAAI,EAAE,wBAAwB,EAAE,CACnC,CAAC;IACJ,CAAC;IASD,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,SAAS;YACvB,CAAC,CAAC,kCAAkC,cAAc,KAAK,MAAM,CAAC,SAAS,YAAY,MAAM,CAAC,aAAa,gBAAgB;YACvH,CAAC,CAAC,kCAAkC,cAAc,KAAK,MAAM,CAAC,SAAS,GAAG,CAAC;QAG7E,IAAI,WAAmB,CAAC;QACxB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,cAAc,EAAE,aAAa,EAAE,CAAC;gBAClC,WAAW,GAAG,mCAAmC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1E,CAAC;iBAAM,IAAI,cAAc,EAAE,QAAQ,EAAE,CAAC;gBACpC,WAAW,GAAG,oBAAoB,MAAM,CAAC,aAAa,6BAA6B,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC/G,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,qBAAqB,MAAM,CAAC,aAAa,GAAG,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,GAAG,qEAAqE,WAAW,GAAG,CAAC;QAChG,OAAO,WAAW,CAAC,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;YACzE,IAAI,EAAE,mCAAmC;YACzC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QAKnD,IAAI,cAAc,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,WAAW,CAChB,eAAe,EACf,eAAe,EACf,MAAM,EACN,qBAAqB,MAAM,CAAC,aAAa,cAAc,cAAc,GAAG,EACxE,gCAAgC,EAChC,EAAE,IAAI,EAAE,gCAAgC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAC9G,CAAC;QACJ,CAAC;aAAM,CAAC;YAEN,OAAO,WAAW,CAChB,eAAe,EACf,eAAe,EACf,MAAM,EACN,gCAAgC,cAAc,oBAAoB,MAAM,CAAC,aAAa,EAAE,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAChB,eAAe,EACf,eAAe,EACf,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAC9C,WAAW,cAAc,cAAc,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,GAAG,EAAE,EAClH,MAAM,CAAC,SAAS,KAAK,OAAO;QAC1B,CAAC,CAAC,qEAAqE;QACvE,CAAC,CAAC,SAAS,EACb,MAAM,CAAC,SAAS,KAAK,OAAO;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;QACtE,CAAC,CAAC,SAAS,CACd,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,WAAmB,EACnB,SAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,8BAA8B,QAAQ,CAAC,MAAM,OAAO,WAAW,GAAG,EAClE,iFAAiF,EACjF,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CACzF,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,+BAA+B,WAAW,GAAG,CAC9C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAChB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,sCAAsC,WAAW,GAAG,EACpD,6FAA6F,EAC7F,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAcD,SAAS,oBAAoB,CAC3B,WAAmB,EACnB,cAAoC,EACpC,gBAAwC;IAExC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC5E,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,OAAO,WAAW,CAChB,iBAAiB,EACjB,0BAA0B,EAC1B,MAAM,EACN,2GAA2G,EAC3G,uFAAuF,EACvF,EAAE,IAAI,EAAE,6BAA6B,EAAE,CACxC,CAAC;IACJ,CAAC;IACD,IAAI,QAA+D,CAAC;IACpE,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAChB,iBAAiB,EACjB,0BAA0B,EAC1B,MAAM,EACN,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,EAC7F,iGAAiG,EACjG,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAC/G,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,WAAW,CAChB,iBAAiB,EACjB,0BAA0B,EAC1B,MAAM,EACN,6CAA6C,EAC7C,0DAA0D,EAC1D,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAClC,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAClE,IAAI,UAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACnC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;YACjG,SAAS;QACX,CAAC;QACD,IAAI,UAAU,KAAK,KAAK,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,WAAW,CAChB,iBAAiB,EACjB,0BAA0B,EAC1B,MAAM,EACN,GAAG,OAAO,CAAC,MAAM,sEAAsE,CACxF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG;QACb,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;QACvJ,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,cAAc,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;KACxK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,WAAW,CAChB,iBAAiB,EACjB,0BAA0B,EAC1B,MAAM,EACN,iCAAiC,MAAM,GAAG,EAC1C,gLAAgL,EAChL,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAC9D,CAAC;AACJ,CAAC;AA0BD,KAAK,UAAU,qBAAqB,CAClC,YAA0B,EAC1B,iBAA0B,EAC1B,aAA6D;IAE7D,IAAI,YAAY,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,UAAU,CACf,kBAAkB,EAClB,iBAAiB,EACjB,kHAAkH,CACnH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,UAAU,CACf,kBAAkB,EAClB,iBAAiB,EACjB,+BAA+B,YAAY,CAAC,UAAU,2LAA2L,EACjP,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAMD,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,aAAa,CAAC,+BAA+B,CAAC;YAC9C,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,EACnF,0BAA0B,CAC3B,CAAC;YACJ,CAAC,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,WAAW,CAChB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,mBAAmB,YAAY,CAAC,UAAU,2HAA2H,EACrK,2FAA2F,EAC3F,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAChB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,eAAe,MAAM,CAAC,MAAM,4BAA4B,YAAY,CAAC,UAAU,IAAI,CACpF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,WAAW,CAChB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,mBAAmB,YAAY,CAAC,UAAU,6BAA6B,GAAG,8CAA8C,EACxH,4HAA4H,EAC5H,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CACjG,CAAC;IACJ,CAAC;YAAS,CAAC;QAKT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAWD,KAAK,UAAU,eAAe,CAC5B,YAA0B,EAC1B,iBAA0B,EAC1B,iBAAuC;IAEvC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,UAAU,CACf,WAAW,EACX,eAAe,EACf,kGAAkG,CACnG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,UAAU,CACf,WAAW,EACX,eAAe,EACf,8BAA8B,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,KAAK,IAAI,SAAS,oHAAoH,EACzL,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,yBAAyB,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,WAAW,CAChB,WAAW,EACX,eAAe,EACf,MAAM,EACN,GAAG,GAAG,CAAC,QAAQ,sCAAsC,MAAM,CAAC,KAAK,IAAI,eAAe,uDAAuD,EAC3I,8DAA8D,EAC9D,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE,EAAE,CACzG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,WAAW,CAChB,WAAW,EACX,eAAe,EACf,MAAM,EACN,GAAG,GAAG,CAAC,QAAQ,iBAAiB,GAAG,uDAAuD,EAC1F,8DAA8D,EAC9D,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CACvE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAqB;IAGnD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACvE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACrF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,EACJ,WAAW,EACX,cAAc,EACd,SAAS,GAAG,KAAK,EACjB,iBAAiB,GAAG,KAAK,EACzB,aAAa,GAAG,SAAS,EACzB,iBAAiB,GAAG,aAAa,EACjC,WAAW,GAAG,uBAAuB,EACrC,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,gBAAgB,GAAG,YAAY,EAC/B,iBAAiB,GAAG,aAAa,EACjC,kBAAkB,GAAG,cAAc,EACnC,sBAAsB,GAAG,kBAAkB,EAC3C,iBAAiB,GAAG,aAAa,EACjC,kBAAkB,GAAG,cAAc,EACnC,4BAA4B,GAAG,wBAAwB,EACvD,wBAAwB,EACxB,4BAA4B,GAAG,wBAAwB,EACvD,cAAc,GAAG,EAAE,CAAC,UAAU,EAC9B,gBAAgB,GAAG,EAAE,CAAC,YAAY,EAClC,YAAY,GAAG,EAAE,CAAC,QAAQ,EAC1B,SAAS,GAAG,KAAK,EACjB,sBAAsB,EACtB,sBAAsB,GAAG,yBAAyB,GACnD,GAAG,OAAO,CAAC;IASZ,MAAM,iBAAiB,GAAG,kBAAkB,EAAE,CAAC;IAC/C,MAAM,qBAAqB,GAAyB,iBAAiB;QACnE,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS;QACjB,CAAC,CAAC,iBAAiB,CAAC;IAEtB,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,MAAM,OAAO,GAAG,4BAA4B,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,CACT,WAAW,CACT,iBAAiB,EACjB,gBAAgB,EAChB,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACvC,4BAA4B,cAAc,CAAC,KAAK,GAAG,EACnD,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,8IAA8I;QAChJ,CAAC,CAAC,SAAS,EACb,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,SAAS,CACxE,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAW3C,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,gBAAgB,CAAC,YAAY,CAA4B,CAAC;QACrE,MAAM,KAAK,GACR,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAiC,EAAE,CAAC,IAAI,CAAC,CAAC;QACjG,QAAQ,CAAC,IAAI,CACX,WAAW,CACT,UAAU,EACV,UAAU,EACV,MAAM,EACN,mCAAmC,YAAY,KAAK,KAAK,aAAa,CACvE,CACF,CAAC;QAoCF,MAAM,QAAQ,GAAG,EAAE;aAChB,OAAO,CAAC,oFAAoF,CAAC;aAC7F,GAAG,EAAsC,CAAC;QAC7C,IAAI,QAAQ,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,EAAE;iBACnB,OAAO,CACN;;8BAEoB,CACrB;iBACA,GAAG,CAAC,yBAAyB,CAA+B,CAAC;YAChE,IAAI,WAAW,EAAE,CAAC,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CACX,WAAW,CACT,kBAAkB,EAClB,4BAA4B,EAC5B,MAAM,EACN,2BAA2B,WAAW,CAAC,CAAC,kDAAkD;oBACxF,0FAA0F;oBAC1F,wFAAwF;oBACxF,2FAA2F,EAC7F,0DAA0D,EAC1D,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAC7D,aAAa,CACd,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAC;QAC/C,IAAI,cAAc,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CACX,WAAW,CACT,cAAc,EACd,cAAc,EACd,MAAM,EACN,iEAAiE,EACjE,2EAA2E,EAC3E,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAC/B,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;QAG9E,IAAI,SAAiB,CAAC;QACtB,IAAI,GAAW,CAAC;QAChB,IAAI,KAA2B,CAAC;QAGhC,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;gBACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAEvC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC1B,SAAS,GAAG,0DAA0D,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;oBACzG,GAAG,GAAG,+BAA+B,YAAY,GAAG,CAAC;oBAGrD,KAAK,GAAG,UAAU,CAAC;gBACrB,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC3B,SAAS,GAAG,qDAAqD,CAAC;oBAClE,GAAG,GAAG,4BAA4B,YAAY,2CAA2C,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,yBAAyB,IAAI,CAAC,IAAI,iCAAiC,OAAO,EAAE,CAAC;oBACzF,GAAG,GAAG,yBAAyB,YAAY,MAAM,YAAY,2BAA2B,CAAC;gBAC3F,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,GAAG,2BAA2B,YAAY,uBAAuB,OAAO,EAAE,CAAC;gBACpF,GAAG,GAAG,6CAA6C,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,SAAS,GAAG,sCAAsC,GAAG,EAAE,CAAC;gBACxD,GAAG,GAAG,+BAA+B,GAAG,2CAA2C,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;oBAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;oBAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,SAAS,GAAG,uDAAuD,GAAG,EAAE,CAAC;wBACzE,GAAG,GAAG,yCAAyC,GAAG,GAAG,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,SAAS,GAAG,4BAA4B,YAAY,wCAAwC,CAAC;wBAC7F,GAAG,GAAG,yEAAyE,CAAC;oBAClF,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS,GAAG,qDAAqD,GAAG,EAAE,CAAC;oBACvE,GAAG,GAAG,2CAA2C,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;QAID,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CACX,WAAW,CACT,UAAU,EACV,UAAU,EACV,MAAM,EACN,SAAS,EACT,GAAG,EAGH,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAC1D,KAAK,CACN,CACF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC;YACH,qBAAqB,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC;IAM1G,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC;IACnH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IASpB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM;WACxC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IACtH,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAGnE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC/E,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACvF,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAKjF,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,MAAM,CAAC,IAAI,CACT,UAAU,CACR,cAAc,EACd,2BAA2B,EAC3B,gBAAgB,YAAY,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,kBAAkB,YAAY,CAAC,UAAU,UAAU,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,gBAAgB,8EAA8E,CAClV,CACF,CAAC;IAKF,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,UAAU,CACpB,mBAAmB,EACnB,6BAA6B,EAC7B,sXAAsX,CACvX,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI;YACxB,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,UAAU,CACpB,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,IAAI,mLAAmL,CACjN,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,qBAAqB,CAAC,YAAY,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;IACzF,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEvF,MAAM,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,cAAc,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC;IAM3F,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CACT,WAAW,CACT,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,yBAAyB,MAAM,CAAC,UAAU,aAAa,MAAM,CAAC,UAAU,uKAAuK,CAChP,CACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEtF,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC;QACtC,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAyB;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,cAAsB;IAC7E,MAAM,KAAK,GAAG,CAAC,kBAAkB,cAAc,EAAE,EAAE,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAIf,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7F,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"} \ No newline at end of file diff --git a/dist/core/embedder.d.ts b/dist/core/embedder.d.ts index 60f88d3b..bcfe7760 100644 --- a/dist/core/embedder.d.ts +++ b/dist/core/embedder.d.ts @@ -9,7 +9,10 @@ export declare function flushPendingEmbeddings(): Promise; export declare function entityEmbedText(name: string, observations: string[]): string; export declare function embedText(text: string, caps?: Capabilities): Promise; export type EmbedOutcome = 'stored' | 'removed' | 'no_embedding' | 'dimension_mismatch' | 'write_failed' | 'database_closed' | 'no_vector_index'; -export declare function embedAndStore(entityId: number, text: string, caps?: Capabilities): Promise; +export declare function embedAndStore(entityId: number, text: string, caps?: Capabilities, target?: { + table: string; + dimension: number; +}): Promise; export declare function vectorSearch(queryEmbedding: Float32Array, limit?: number): Array<{ id: number; distance: number; diff --git a/dist/core/embedder.d.ts.map b/dist/core/embedder.d.ts.map index ff8324df..d659f85d 100644 --- a/dist/core/embedder.d.ts.map +++ b/dist/core/embedder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/core/embedder.ts"],"names":[],"mappings":"AAQA,OAAO,EAA6C,KAAK,YAAY,EAAkB,MAAM,aAAa,CAAC;AAuC3G,eAAO,MAAM,mBAAmB,IAAO,CAAC;AAYxC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAYD,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,YAAmC,GAAG,OAAO,CAMvF;AAyBD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAY7D;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAM/F;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAI5D;AAwDD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAE5E;AAaD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,YAAmC,GACxC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAY9B;AAqDD,MAAM,MAAM,YAAY,GAEpB,QAAQ,GAER,SAAS,GAET,cAAc,GAEd,oBAAoB,GAEpB,cAAc,GAEd,iBAAiB,GAEjB,iBAAiB,CAAC;AAUtB,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAiE9G;AAKD,wBAAgB,YAAY,CAC1B,cAAc,EAAE,YAAY,EAC5B,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBzC"} \ No newline at end of file +{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/core/embedder.ts"],"names":[],"mappings":"AAQA,OAAO,EAA6C,KAAK,YAAY,EAAkB,MAAM,aAAa,CAAC;AAuC3G,eAAO,MAAM,mBAAmB,IAAO,CAAC;AAYxC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAYD,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,YAAmC,GAAG,OAAO,CAMvF;AA2BD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAY7D;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAM/F;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAI5D;AAwDD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAE5E;AAaD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,YAAmC,GACxC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAY9B;AAqDD,MAAM,MAAM,YAAY,GAEpB,QAAQ,GAER,SAAS,GAET,cAAc,GAEd,oBAAoB,GAEpB,cAAc,GAEd,iBAAiB,GAEjB,iBAAiB,CAAC;AAUtB,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,YAAY,EAWnB,MAAM,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,YAAY,CAAC,CAoEvB;AAKD,wBAAgB,YAAY,CAC1B,cAAc,EAAE,YAAY,EAC5B,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBzC"} \ No newline at end of file diff --git a/dist/core/embedder.js b/dist/core/embedder.js index 2cbcaee1..73cddb89 100644 --- a/dist/core/embedder.js +++ b/dist/core/embedder.js @@ -87,7 +87,7 @@ function rejectNonFinite(vector, provider) { } return vector; } -export async function embedAndStore(entityId, text, caps) { +export async function embedAndStore(entityId, text, caps, target) { try { const embedding = await embedText(text, caps); if (!embedding) @@ -96,24 +96,25 @@ export async function embedAndStore(entityId, text, caps) { if (!hasVectorIndex(db)) return 'no_vector_index'; const storedDim = db.prepare("SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'").get(); - const expectedDim = storedDim ? parseInt(storedDim.value, 10) : 0; + const expectedDim = target ? target.dimension : (storedDim ? parseInt(storedDim.value, 10) : 0); const actualDim = embedding.length; if (expectedDim > 0 && actualDim !== expectedDim) { process.stderr.write(`MeMesh: Embedding dimension mismatch (got ${actualDim}, expected ${expectedDim}). ` + `Skipping vector write for entity ${entityId}. ` + `If you switched embedders, the vector index has to be rebuilt at the new ` + - `dimension: 'memesh reindex --vectors'.\n`); + `dimension: run 'memesh reindex' with no --namespace.\n`); return 'dimension_mismatch'; } const rowId = toVectorRowId(entityId); const entity = db.prepare('SELECT status FROM entities WHERE id = ?').get(entityId); + const table = target?.table ?? 'entities_vec'; if (!entity || entity.status === 'archived') { - db.prepare('DELETE FROM entities_vec WHERE rowid = ?').run(rowId); + db.prepare(`DELETE FROM ${table} WHERE rowid = ?`).run(rowId); return 'removed'; } const writeVector = db.transaction(() => { - db.prepare('DELETE FROM entities_vec WHERE rowid = ?').run(rowId); - db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)').run(rowId, toVectorBlob(embedding)); + db.prepare(`DELETE FROM ${table} WHERE rowid = ?`).run(rowId); + db.prepare(`INSERT INTO ${table} (rowid, embedding) VALUES (?, ?)`).run(rowId, toVectorBlob(embedding)); }); writeVector(); return 'stored'; @@ -153,19 +154,62 @@ async function embedWithProvider(text, config) { return null; } } +const PROVIDER_TIMEOUT_MS = 30_000; +const PROVIDER_MAX_ATTEMPTS = 3; +const PROVIDER_BASE_BACKOFF_MS = 500; +async function providerFetch(url, init, label) { + for (let attempt = 1; attempt <= PROVIDER_MAX_ATTEMPTS; attempt++) { + const timeout = AbortSignal.timeout(PROVIDER_TIMEOUT_MS); + let res; + try { + res = await fetch(url, { ...init, signal: timeout, redirect: 'error' }); + } + catch (err) { + const timedOut = err instanceof Error && (err.name === 'TimeoutError' || err.name === 'AbortError'); + if (attempt === PROVIDER_MAX_ATTEMPTS) { + process.stderr.write(`MeMesh: ${label} embedding request ${timedOut ? `timed out after ${PROVIDER_TIMEOUT_MS}ms` : 'failed'} ` + + `on attempt ${attempt}/${PROVIDER_MAX_ATTEMPTS}.\n`); + return null; + } + await sleep(PROVIDER_BASE_BACKOFF_MS * attempt); + continue; + } + if (res.ok) + return res; + const retryable = res.status === 429 || res.status >= 500; + if (!retryable) { + process.stderr.write(`MeMesh: ${label} embedding request refused with HTTP ${res.status}.\n`); + return null; + } + if (attempt === PROVIDER_MAX_ATTEMPTS) { + process.stderr.write(`MeMesh: ${label} embedding request still failing with HTTP ${res.status} ` + + `after ${PROVIDER_MAX_ATTEMPTS} attempts.\n`); + return null; + } + const retryAfter = Number(res.headers.get('retry-after')); + const waitMs = Number.isFinite(retryAfter) && retryAfter > 0 + ? Math.min(retryAfter * 1000, 30_000) + : PROVIDER_BASE_BACKOFF_MS * attempt; + await sleep(waitMs); + } + return null; +} +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} async function embedWithOpenAI(text, config) { const apiKey = config.apiKey || process.env.OPENAI_API_KEY; if (!apiKey) return null; - const res = await fetch('https://api.openai.com/v1/embeddings', { + const res = await providerFetch('https://api.openai.com/v1/embeddings', { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'text-embedding-3-small', input: text.slice(0, 8000), }), - }); - if (!res.ok) + }, 'OpenAI'); + if (!res) return null; const data = await res.json(); const embedding = data.data?.[0]?.embedding; @@ -176,12 +220,12 @@ async function embedWithOpenAI(text, config) { async function embedWithOllama(text, config) { const host = process.env.OLLAMA_HOST || 'http://localhost:11434'; const model = config.model || 'nomic-embed-text'; - const res = await fetch(`${host}/api/embed`, { + const res = await providerFetch(`${host}/api/embed`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ model, input: text.slice(0, 8000) }), - }); - if (!res.ok) + }, 'Ollama'); + if (!res) return null; const data = await res.json(); const embedding = data.embeddings?.[0]; diff --git a/dist/core/embedder.js.map b/dist/core/embedder.js.map index 8dbac90c..efce3a99 100644 --- a/dist/core/embedder.js.map +++ b/dist/core/embedder.js.map @@ -1 +1 @@ -{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/core/embedder.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/core/embedder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/core/operations.d.ts.map b/dist/core/operations.d.ts.map index b7c368a7..bb4555a3 100644 --- a/dist/core/operations.d.ts.map +++ b/dist/core/operations.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,MAAM,EACP,MAAM,YAAY,CAAC;AAgDpB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,CAsH5D;AAUD,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAGlD;AAiJD,MAAM,WAAW,aAAa;IAG5B,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAIvB,QAAQ,EAAE,OAAO,CAAC;IAGlB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC,CAkC3D;AASD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW;;;;GAK1D;AAGD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYjE,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAoBnD;AAMD,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAwBtD;AAYD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAe1G;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAgB/E,MAAM,EAAE,MAAM,CAAC;IAYf,cAAc,EAAE,MAAM,CAAC;IAOvB,0BAA0B,EAAE,MAAM,CAAC;IAEnC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AA2CD,wBAAsB,OAAO,CAAC,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAwKnF"} \ No newline at end of file +{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,MAAM,EACP,MAAM,YAAY,CAAC;AAgDpB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,CAsH5D;AAUD,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAGlD;AA4JD,MAAM,WAAW,aAAa;IAG5B,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAIvB,QAAQ,EAAE,OAAO,CAAC;IAGlB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC,CAkC3D;AASD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW;;;;GAK1D;AAGD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYjE,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAoBnD;AAMD,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAwBtD;AAYD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAe1G;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAgB/E,MAAM,EAAE,MAAM,CAAC;IAYf,cAAc,EAAE,MAAM,CAAC;IAOvB,0BAA0B,EAAE,MAAM,CAAC;IAEnC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AA2CD,wBAAsB,OAAO,CAAC,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAkPnF"} \ No newline at end of file diff --git a/dist/core/operations.js b/dist/core/operations.js index a9937d24..99c0716b 100644 --- a/dist/core/operations.js +++ b/dist/core/operations.js @@ -1,4 +1,4 @@ -import { getDatabase, clearPendingReindexFlag } from '../db.js'; +import { getDatabase, clearPendingReindexFlag, markReindexOwed, getStoredEmbeddingDimension, beginVectorGeneration, generationRowIds, swapVectorGeneration, } from '../db.js'; import { hasSearchableTerms } from '../storage/fts-index.js'; import { KnowledgeGraph } from '../knowledge-graph.js'; import { rankEntities } from './scoring.js'; @@ -7,7 +7,7 @@ import { createExplicitLesson } from './lesson-engine.js'; import { embedAndStore, isEmbeddingAvailable, embedText, entityEmbedText, scheduleEmbedAndStore, vectorSearch, vectorSimilarity, MAX_VECTOR_DISTANCE } from './embedder.js'; import { autoTagAndApply } from './auto-tagger.js'; import { hasVectorIndex } from '../storage/vector-index.js'; -import { detectCapabilities } from './config.js'; +import { detectCapabilities, getEmbeddingDimension } from './config.js'; function buildLocalMetadata(existingMetadata, overrides) { return { ...(existingMetadata ?? {}), @@ -124,6 +124,9 @@ async function supplementWithVectors(query, args, kg, merged, relevanceMap) { const queryEmb = await embedText(query, caps); if (!queryEmb) return 'degraded'; + const storedDim = getStoredEmbeddingDimension(); + if (storedDim !== 0 && queryEmb.length !== storedDim) + return 'degraded'; const vectorHits = vectorSearch(queryEmb, args.limit ?? 20); if (vectorHits.length === 0) return 'used'; @@ -251,6 +254,20 @@ export async function reindex(opts) { if (!hasVectorIndex(db)) { throw new Error('sqlite-vec is not loaded, so this database has no vector index to rebuild. Recall is running on FTS5 keyword search alone. Run `memesh doctor` — its "SQLite and vector search" row explains why the extension did not load on this machine.'); } + const targetDim = getEmbeddingDimension(); + const useGeneration = !opts?.namespace; + const provider = detectCapabilities().embeddings; + let generation; + let alreadyStaged = new Set(); + if (useGeneration) { + const { resumed } = beginVectorGeneration(targetDim, provider); + generation = { table: 'entities_vec_next', dimension: targetDim }; + if (resumed) { + alreadyStaged = generationRowIds(); + process.stderr.write(`MeMesh: resuming an unfinished ${targetDim}-dim rebuild — ${alreadyStaged.size} entities already embedded, ` + + `so the provider is only asked for the rest.\n`); + } + } const namespaceFilter = opts?.namespace ? 'AND namespace = ?' : ''; const params = opts?.namespace ? [opts.namespace] : []; const entities = db.prepare(`SELECT id, name FROM entities WHERE status = 'active' ${namespaceFilter} ORDER BY id`).all(...params); @@ -285,7 +302,11 @@ export async function reindex(opts) { } const text = entityEmbedText(entity.name, observations); try { - outcomes[await embedAndStore(entity.id, text)]++; + if (alreadyStaged.has(entity.id)) { + outcomes.stored++; + continue; + } + outcomes[await embedAndStore(entity.id, text, undefined, generation)]++; if (processed % 10 === 0) { process.stderr.write(`MeMesh: Processed ${processed}/${entities.length} ` + `(${outcomes.stored} embedded, ${processed - outcomes.stored} skipped)\n`); @@ -302,6 +323,23 @@ export async function reindex(opts) { outcomes.dimension_mismatch + outcomes.write_failed + outcomes.database_closed; + if (generation) { + const stagedRows = generationRowIds().size; + const expected = entities.length - outcomes.entity_missing - outcomes.nothing_to_embed - outcomes.removed; + const complete = failed === 0 && stagedRows >= expected; + if (complete) { + swapVectorGeneration(generation.dimension); + process.stderr.write(`MeMesh: new ${generation.dimension}-dim index verified (${stagedRows} vectors) and switched in. ` + + `The previous index was replaced only after this check passed.\n`); + } + else { + process.stderr.write(`MeMesh: the new index is incomplete (${stagedRows} of ${expected} vectors` + + `${failed > 0 ? `, ${failed} failures` : ''}), so it was NOT switched in — ` + + `your existing index is untouched and still answering queries. ` + + `Run 'memesh reindex' again to continue from where this stopped; ` + + `the ${stagedRows} embeddings already produced are kept and will not be re-requested.\n`); + } + } const missingVectors = countMissingVectors(db, opts?.namespace); const missingVectorsDatabaseWide = opts?.namespace ? countMissingVectors(db) @@ -309,14 +347,17 @@ export async function reindex(opts) { process.stderr.write(`MeMesh: Reindex complete. ${embedded}/${processed} entities embedded.\n`); if (outcomes.dimension_mismatch > 0) { process.stderr.write(`MeMesh: ${outcomes.dimension_mismatch} entities were skipped because the provider's ` + - `embedding dimension does not match this database's vector index. Rebuild it with ` + - `'memesh reindex --vectors'.\n`); + `embedding dimension does not match this database's vector index. Rebuild it by ` + + `running 'memesh reindex' with no --namespace: a full run builds the new width ` + + `in a staging index and switches over once it is complete.\n`); } const pendingReindexCleared = missingVectorsDatabaseWide === 0 && failed === 0; if (pendingReindexCleared) { clearPendingReindexFlag(); } else if (missingVectorsDatabaseWide > 0) { + const owedWidth = getStoredEmbeddingDimension(); + markReindexOwed(owedWidth, owedWidth, 'vectors-missing'); process.stderr.write(`MeMesh: ${missingVectorsDatabaseWide} active memories still have no vector` + `${opts?.namespace ? ' (across all namespaces)' : ''}, so the ` + `reindex-needed flag was left set.\n`); diff --git a/dist/core/operations.js.map b/dist/core/operations.js.map index d216d64b..0bfad76c 100644 --- a/dist/core/operations.js.map +++ b/dist/core/operations.js.map @@ -1 +1 @@ -{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/db.d.ts b/dist/db.d.ts index 448bdfad..fa8ac34a 100644 --- a/dist/db.d.ts +++ b/dist/db.d.ts @@ -5,12 +5,27 @@ export declare function openDatabase(dbPath?: string): MemeshDatabase; export declare function reindexFts(): { entities: number; }; -export declare function allowVectorIndexRebuild(dbPath: string, canRefill: () => Promise): Promise; -export declare function getPendingReindexInfo(): { +export interface VectorGenerationInfo { + dimension: number; + provider: string; + startedAt: string; +} +export declare function getVectorGenerationInfo(): VectorGenerationInfo | null; +export declare function generationRowIds(): Set; +export declare function beginVectorGeneration(dimension: number, provider: string): { + resumed: boolean; +}; +export declare function discardVectorGeneration(): void; +export declare function swapVectorGeneration(dimension: number): void; +export declare function getStoredEmbeddingDimension(): number; +export interface PendingReindexInfo { from: number; to: number; - droppedAt: string; -} | null; + noticedAt: string; + reason: 'dimension-change' | 'vectors-missing'; +} +export declare function getPendingReindexInfo(): PendingReindexInfo | null; +export declare function markReindexOwed(from: number, to: number, reason: PendingReindexInfo['reason']): void; export declare function clearPendingReindexFlag(): void; export declare function closeDatabase(): void; export declare function getDatabase(): MemeshDatabase; diff --git a/dist/db.d.ts.map b/dist/db.d.ts.map index d754a052..b04c72c9 100644 --- a/dist/db.d.ts.map +++ b/dist/db.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD,OAAO,EASL,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;AActD,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAmC5D;AA8MD,wBAAgB,UAAU,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkCjD;AAsCD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAChC,OAAO,CAAC,OAAO,CAAC,CAIlB;AAgJD,wBAAgB,qBAAqB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU9F;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAmcD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,WAAW,IAAI,cAAc,CAG5C;AAQD,wBAAgB,cAAc,IAAI,OAAO,CAExC"} \ No newline at end of file +{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD,OAAO,EASL,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;AActD,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAmC5D;AA8MD,wBAAgB,UAAU,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkCjD;AA2KD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,IAAI,CAarE;AAID,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,CAe9C;AAQD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAmC/F;AAGD,wBAAgB,uBAAuB,IAAI,IAAI,CAM9C;AA2CD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAqC5D;AAQD,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IAGX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,CAAC;CAChD;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,GAAG,IAAI,CAUjE;AAYD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GACnC,IAAI,CAcN;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAmcD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,WAAW,IAAI,cAAc,CAG5C;AAQD,wBAAgB,cAAc,IAAI,OAAO,CAExC"} \ No newline at end of file diff --git a/dist/db.js b/dist/db.js index aa48b814..1becc57e 100644 --- a/dist/db.js +++ b/dist/db.js @@ -114,20 +114,7 @@ export function reindexFts() { .get(); return { entities: c }; } -let vectorRebuildConsentFor = null; -export async function allowVectorIndexRebuild(dbPath, canRefill) { - if (!(await canRefill())) - return false; - vectorRebuildConsentFor = path.resolve(dbPath); - return true; -} -function consumeVectorRebuildConsent(resolvedPath) { - const granted = vectorRebuildConsentFor; - vectorRebuildConsentFor = null; - return granted !== null && granted === path.resolve(resolvedPath); -} function ensureVecTable(db, resolvedPath, targetDim, dimensionKnown = true) { - const rebuildConsented = consumeVectorRebuildConsent(resolvedPath); const storedDim = db.prepare("SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'").get(); const currentDim = storedDim ? parseInt(storedDim.value, 10) : 0; const vecExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='entities_vec'").get(); @@ -140,25 +127,18 @@ function ensureVecTable(db, resolvedPath, targetDim, dimensionKnown = true) { `Fix ~/.memesh/config.json to change embedders.\n`); return; } - if (vecExists && - currentDim !== 0 && - currentDim !== targetDim && - !rebuildConsented) { + if (vecExists && currentDim !== 0 && currentDim !== targetDim) { process.stderr.write(`MeMesh: this database records ${currentDim}-dim embeddings but the current ` + - `configuration asks for ${targetDim}. Keeping the existing vector index rather ` + - `than rebuilding it, because rebuilding deletes every stored vector. ` + - `If the configuration is wrong, fix it. If you meant to switch embedders, run ` + - `'memesh reindex --vectors' to rebuild the index at ${targetDim} and regenerate.\n`); + `configuration asks for ${targetDim}. Nothing is deleted — the index is kept ` + + `so a rebuild can resume — but semantic search is OFF until the rebuild ` + + `finishes, because a ${targetDim}-dim query cannot be matched against a ` + + `${currentDim}-dim index; recall is on keyword search alone meanwhile. ` + + `Run 'memesh reindex' to build the ${targetDim}-dim index alongside it and ` + + `switch over once it is complete.\n`); + markReindexOwed(currentDim, targetDim, 'dimension-change'); return; } db.transaction(() => { - if (vecExists) { - process.stderr.write(`MeMesh: Embedding dimension changed (${currentDim} → ${targetDim}). Rebuilding vector index.\n` + - `MeMesh: Old embeddings deleted. Run 'memesh reindex' to regenerate vectors for all entities.\n` + - `MeMesh: Without reindex, only newly accessed entities will be embedded.\n`); - db.exec('DROP TABLE entities_vec'); - db.prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('pending_reindex', ?)").run(JSON.stringify({ from: currentDim, to: targetDim, droppedAt: new Date().toISOString() })); - } db.exec(` CREATE VIRTUAL TABLE IF NOT EXISTS entities_vec USING vec0( embedding float[${targetDim}] @@ -167,6 +147,91 @@ function ensureVecTable(db, resolvedPath, targetDim, dimensionKnown = true) { db.prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('embedding_dimension', ?)").run(String(targetDim)); }).immediate(); } +const GENERATION_TABLE = 'entities_vec_next'; +const GENERATION_KEY = 'vector_generation'; +export function getVectorGenerationInfo() { + if (!db) + return null; + try { + const row = db.prepare('SELECT value FROM memesh_metadata WHERE key = ?').get(GENERATION_KEY); + if (!row) + return null; + const parsed = JSON.parse(row.value); + if (typeof parsed.dimension !== 'number' || typeof parsed.provider !== 'string') + return null; + return { dimension: parsed.dimension, provider: parsed.provider, startedAt: String(parsed.startedAt ?? '') }; + } + catch { + return null; + } +} +export function generationRowIds() { + const out = new Set(); + if (!db) + return out; + const exists = db.prepare("SELECT COUNT(*) AS c FROM sqlite_master WHERE type IN ('table','view') AND name = ?").get(GENERATION_TABLE).c > 0; + if (!exists) + return out; + const rows = db.prepare(`SELECT rowid AS id FROM ${GENERATION_TABLE}`).all(); + for (const r of rows) + out.add(Number(r.id)); + return out; +} +export function beginVectorGeneration(dimension, provider) { + if (!Number.isInteger(dimension) || dimension <= 0 || dimension > 65536) { + throw new Error(`Refusing to build a vector index at width ${String(dimension)}.`); + } + const conn = getDatabase(); + const existing = getVectorGenerationInfo(); + const stagingExists = conn.prepare("SELECT COUNT(*) AS c FROM sqlite_master WHERE type IN ('table','view') AND name = ?").get(GENERATION_TABLE).c > 0; + const compatible = stagingExists && existing !== null + && existing.dimension === dimension && existing.provider === provider; + if (stagingExists && !compatible) { + discardVectorGeneration(); + } + const startedAt = compatible && existing ? existing.startedAt : new Date().toISOString(); + conn.transaction(() => { + conn.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS ${GENERATION_TABLE} USING vec0(embedding float[${dimension}])`); + conn.prepare('INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)').run(GENERATION_KEY, JSON.stringify({ dimension, provider, startedAt })); + }).immediate(); + return { resumed: compatible }; +} +export function discardVectorGeneration() { + const conn = getDatabase(); + conn.transaction(() => { + conn.exec(`DROP TABLE IF EXISTS ${GENERATION_TABLE}`); + conn.prepare('DELETE FROM memesh_metadata WHERE key = ?').run(GENERATION_KEY); + }).immediate(); +} +export function swapVectorGeneration(dimension) { + if (!Number.isInteger(dimension) || dimension <= 0 || dimension > 65536) { + throw new Error(`Refusing to build a vector index at width ${String(dimension)}.`); + } + const conn = getDatabase(); + conn.transaction(() => { + conn.exec(`DELETE FROM ${GENERATION_TABLE} WHERE rowid NOT IN ` + + `(SELECT id FROM entities WHERE status = 'active')`); + const storedDim = Number(conn.prepare("SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'").get()?.value ?? 0); + if (storedDim === dimension) { + conn.exec(`INSERT INTO ${GENERATION_TABLE} (rowid, embedding) ` + + `SELECT v.rowid, v.embedding FROM entities_vec v ` + + `WHERE v.rowid IN (SELECT id FROM entities WHERE status = 'active') ` + + `AND v.rowid NOT IN (SELECT rowid FROM ${GENERATION_TABLE})`); + } + conn.exec('DROP TABLE IF EXISTS entities_vec'); + conn.exec(`CREATE VIRTUAL TABLE entities_vec USING vec0(embedding float[${dimension}])`); + conn.exec(`INSERT INTO entities_vec (rowid, embedding) SELECT rowid, embedding FROM ${GENERATION_TABLE}`); + conn.exec(`DROP TABLE ${GENERATION_TABLE}`); + conn.prepare('INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)').run('embedding_dimension', String(dimension)); + conn.prepare('DELETE FROM memesh_metadata WHERE key = ?').run(GENERATION_KEY); + }).immediate(); +} +export function getStoredEmbeddingDimension() { + if (!db) + return 0; + const row = db.prepare("SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'").get(); + return row ? Number(row.value) || 0 : 0; +} export function getPendingReindexInfo() { if (!db) return null; @@ -178,6 +243,20 @@ export function getPendingReindexInfo() { return null; } } +export function markReindexOwed(from, to, reason) { + if (!db) + return; + const existing = getPendingReindexInfo(); + if (existing && existing.from === from && existing.to === to && existing.reason === reason) { + return; + } + db.prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('pending_reindex', ?)").run(JSON.stringify({ + from, + to, + reason, + noticedAt: existing?.noticedAt ?? new Date().toISOString(), + })); +} export function clearPendingReindexFlag() { if (!db) return; diff --git a/dist/db.js.map b/dist/db.js.map index 07f36f61..0630f0f1 100644 --- a/dist/db.js.map +++ b/dist/db.js.map @@ -1 +1 @@ -{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/skills-manifest.json b/dist/skills-manifest.json index e75a7d3d..8e5318f1 100644 --- a/dist/skills-manifest.json +++ b/dist/skills-manifest.json @@ -43,8 +43,8 @@ }, { "path": "scripts/hooks/_generated/sqlite.js", - "sha256": "e03ec8e4268b4176d9947513a788ba99a22fbdf9326a6b6e1f978e4a2086f6e3", - "bytes": 2838 + "sha256": "445d3fe3058e2f0bf4fb5359a3a6e9584e377a0794880859ba9cafdddedde9a6", + "bytes": 2840 }, { "path": "scripts/hooks/_generated/task-state.js", diff --git a/dist/storage/sqlite.d.ts.map b/dist/storage/sqlite.d.ts.map index 67acc444..f9af2252 100644 --- a/dist/storage/sqlite.d.ts.map +++ b/dist/storage/sqlite.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAoEA,QAAA,MAAQ,YAAY,2CAAqB,CAAC;AAG1C,MAAM,MAAM,eAAe,GAAG,OAAO,aAAa,EAAE,aAAa,CAAC;AAGlE,MAAM,MAAM,cAAc,GAAG,OAAO,aAAa,EAAE,cAAc,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,EAAE,aAAa,CAAC;AAahE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAqBD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC;IACzD,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAKhB,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;CAC1B;AAED,qBAAa,cAAe,SAAQ,YAAY;;gBAQlC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB;IAWnD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAsB/B,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;CA4BtF"} \ No newline at end of file +{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAoEA,QAAA,MAAQ,YAAY,2CAAqB,CAAC;AAG1C,MAAM,MAAM,eAAe,GAAG,OAAO,aAAa,EAAE,aAAa,CAAC;AAGlE,MAAM,MAAM,cAAc,GAAG,OAAO,aAAa,EAAE,cAAc,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,EAAE,aAAa,CAAC;AAahE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAgCD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC;IACzD,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAKhB,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;CAC1B;AAED,qBAAa,cAAe,SAAQ,YAAY;;gBAQlC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB;IAWnD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAsB/B,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;CA4BtF"} \ No newline at end of file diff --git a/dist/storage/sqlite.js b/dist/storage/sqlite.js index 670edb34..1ebde5c7 100644 --- a/dist/storage/sqlite.js +++ b/dist/storage/sqlite.js @@ -22,7 +22,7 @@ function loadNodeSqlite() { } } const { DatabaseSync } = loadNodeSqlite(); -const BUSY_TIMEOUT_MS = 5000; +const BUSY_TIMEOUT_MS = 30_000; export class MemeshDatabase extends DatabaseSync { #depth = 0; constructor(path, options = {}) { diff --git a/dist/storage/sqlite.js.map b/dist/storage/sqlite.js.map index 59b01ce6..47eed22a 100644 --- a/dist/storage/sqlite.js.map +++ b/dist/storage/sqlite.js.map @@ -1 +1 @@ -{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/transports/cli/cli.js b/dist/transports/cli/cli.js index e65827f9..dd525a5b 100755 --- a/dist/transports/cli/cli.js +++ b/dist/transports/cli/cli.js @@ -4,7 +4,7 @@ import { randomBytes } from 'crypto'; import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; -import { openDatabase, closeDatabase, getDatabase, reindexFts, allowVectorIndexRebuild } from '../../db.js'; +import { openDatabase, closeDatabase, getDatabase, reindexFts } from '../../db.js'; import { remember, recallWithConflicts, forget, exportMemories, importMemories, learn, reindex, setPinned } from '../../core/operations.js'; import { readConfig, writeConfig, maskApiKey, detectCapabilities } from '../../core/config.js'; import { MAX_LANGUAGE_LENGTH, languageValueError } from '../../core/output-language.js'; @@ -1838,17 +1838,11 @@ program .description('Regenerate vector embeddings for all entities (--fts rebuilds the keyword index instead)') .option('--namespace ', 'Reindex only entities in this namespace') .option('--fts', 'Rebuild the full-text keyword index instead of the vector index') - .option('--vectors', 'Also rebuild the vector index at the configured dimension. DESTRUCTIVE: drops every ' + - 'stored embedding first. Needed only when switching embedding providers.') .option('--json', 'Output as JSON') .action(async (opts) => { requireOneOf(opts.namespace, NAMESPACES, '--namespace'); try { if (opts.fts) { - if (opts.vectors) { - console.error('❌ --fts and --vectors rebuild different indexes. Run them separately.'); - process.exit(1); - } await withDatabase(async () => { const { entities } = reindexFts(); if (opts.json) { @@ -1860,23 +1854,13 @@ program }); return; } - if (opts.vectors) { - if (opts.namespace) { - console.error('❌ --vectors rebuilds the whole vector index, which is shared by every\n' + - ' namespace, so it cannot be limited to one. Combining it with\n' + - ' --namespace would delete the other namespaces\' embeddings and never\n' + - ' regenerate them. Run `memesh reindex --vectors` on its own, or drop\n' + - ' --vectors to reindex just this namespace at the current dimension.'); - process.exit(1); - } - if (!(await allowVectorIndexRebuild(getDbPath(), canRefillVectorIndex))) { - console.error('❌ Could not produce a test embedding at this database\'s vector width, so\n' + - ' the index was left untouched. Rebuilding it deletes every stored\n' + - ' embedding, and nothing here could regenerate them.\n' + - ' Check that Ollama is running (or that your OpenAI API key is valid) —\n' + - ' then run this again. `memesh doctor` reports which provider is configured.'); - process.exit(1); - } + if (!opts.namespace && !(await canRefillVectorIndex())) { + console.error('❌ Could not produce a test embedding at the configured vector width, so\n' + + ' nothing was rebuilt. Your existing index is untouched and still\n' + + ' answering queries.\n' + + ' Check that Ollama is running (or that your OpenAI API key is valid) —\n' + + ' then run this again. `memesh doctor` reports which provider is configured.'); + process.exit(1); } await withDatabase(async () => { const result = await reindex({ namespace: opts.namespace }); diff --git a/dist/transports/cli/cli.js.map b/dist/transports/cli/cli.js.map index 8183c123..1ee8644b 100644 --- a/dist/transports/cli/cli.js.map +++ b/dist/transports/cli/cli.js.map @@ -1 +1 @@ -{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/transports/cli/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/transports/cli/cli.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/api/API_REFERENCE.md b/docs/api/API_REFERENCE.md index 4d996260..7f08718f 100644 --- a/docs/api/API_REFERENCE.md +++ b/docs/api/API_REFERENCE.md @@ -1133,7 +1133,6 @@ Regenerate vector embeddings for all entities. |--------|-------------| | `--namespace ` | Reindex only entities in this namespace. | | `--fts` | Rebuild the full-text keyword index instead of the vector index. | -| `--vectors` | Rebuild the vector index at the configured dimension first. **Destructive**, and cannot be combined with `--namespace` or `--fts` — see below. | | `--json` | Output the result as JSON. | `--fts` rebuilds the full-text keyword index instead. The keyword index @@ -1147,28 +1146,75 @@ install side by side. `--fts` is the way out of that state. memesh reindex --fts ``` -`--vectors` is for switching embedding providers, and only that. Each provider -emits vectors of a different width — 768 for Ollama, 1536 for OpenAI (and 384 -for the keyword-only default, which is also the width legacy tables were built -at) — and a `vec0` -table is fixed at one width, so changing -provider means dropping the table and recreating it. **Every stored embedding is -deleted.** MeMesh will not do that on its own: when the database and the config -disagree about the dimension, it keeps the existing index and says so, because a -stale index still works and a deleted one cannot be recovered — on a paid API -embedder it has to be bought a second time. `--vectors` is how you say yes. - -```bash -memesh reindex --vectors -``` - -It refuses in three cases, all of which would destroy more than was asked for: +#### Nothing is deleted until the new index is complete + +A full reindex builds the new vectors in a **staging generation** beside the +live index, and replaces the live one only once every entity that should have a +vector has one and nothing failed. The swap is a single transaction. + +What that means in practice: + +- **The old index keeps answering queries** for the whole rebuild, when the + rebuild is at the same width. Rebuilding at a **new** width is different and + the difference matters: a query embedded at the new width cannot be matched + against an index built at the old one, so from the moment you switch provider + until the rebuild completes, **semantic search is off and recall runs on + keyword search alone**. That window is reported honestly rather than hidden — + `recall` returns `retrieval.mode: "fts"` and `retrieval.degraded: true` for + it, and the message printed on open says so. +- **A run that dies part way changes nothing.** Provider rate limit, network + drop, `Ctrl-C`, a killed process — the live index is byte-for-byte what it + was. It is never left as a half-new, half-old mix, whose distances are no + longer comparable against each other or against the dedup threshold. +- **The embeddings already produced are kept.** Run `memesh reindex` again and + it resumes: only the entities the previous run did not reach are sent to the + provider. On a paid API this is the difference between finishing the job and + paying for it twice. +- **A half-built generation is discarded, not resumed, if the provider or the + width changed** since it was started. Vectors from two different embedding + spaces must not end up in one index. +- **A memory captured while the rebuild runs keeps its vector.** Only the + rebuild writes to the staging index; every other writer — the capture hooks, + `remember`, the dreamer, the MCP server — writes the live one, and the rebuild + works from a list of entities taken before it started. So at swap time, rows + that are still active and absent from the staging index are carried across + rather than dropped. (This applies to a same-width rebuild. During a width + change a concurrent write is refused as a dimension mismatch, so there is + nothing of the new width to carry.) +- **A memory you deleted stays deleted.** `forget` clears the live row, but it + does not know about a staging index, so a row staged before the deletion is + pruned at swap time instead of being promoted back into the live index. + +**Switching embedding provider needs no special flag.** Each provider emits a +different width — 768 for Ollama, 1536 for OpenAI, 384 for the keyword-only +default — and a `vec0` table is fixed at one width, so the new index really is a +new table. That is what a generation is. Change the provider in your config and +run `memesh reindex`; the old index stays live at its old width until the new one +is verified. Until you do, MeMesh keeps the existing index and says so on open, +because a stale index still works. + +> `--vectors` was retired. It existed to grant consent for dropping every +> stored embedding before the refill began — the step generations removed. The +> flag is rejected rather than accepted as a no-op, and rejecting it destroys +> nothing. + +A full reindex refuses up front in two cases: | Refused | Why | |---------|-----| -| A test embedding could not be produced at the configured width | Dropping the index would leave nothing able to refill it. The check embeds one string and measures the result, rather than trusting the provider name in the config: `openai` and `ollama` are "available" the moment they are named, so an expired key, a typo'd key, or a stopped Ollama would otherwise authorise deleting every vector in the database. | -| `--vectors --namespace X` | `entities_vec` is one table for the whole database, so the rebuild drops *every* namespace's vectors while `--namespace` would refill only `X`. | -| `--vectors --fts` | Two different indexes; one flag each. | +| A test embedding could not be produced at the configured width | The run would fill nothing, and would spend its whole length discovering that. The check embeds one string and measures the result, rather than trusting the provider name in the config: `openai` and `ollama` are "available" the moment they are named, so an expired key, a typo'd key or a stopped Ollama would otherwise be found out one entity at a time. Your existing index is untouched. | +| sqlite-vec is not loaded | There is no vector index to rebuild, so there is nothing this command can do. Recall is running on FTS5 keyword search alone. `memesh doctor`'s "SQLite and vector search" row explains why the extension did not load on this machine. | + +Namespace-scoped runs (`--namespace X`) write in place rather than through a +generation, because a staging table holding one namespace would drop every other +namespace's vectors when swapped in. In-place is safe for the reason a full +rebuild is not: each row's old vector survives until its replacement has been +produced. + +**Provider requests** are bounded: a 30-second timeout per request, and up to +three attempts for a 429 or a 5xx (honouring `Retry-After` when the server sends +one). A 401, 403 or 404 is configuration rather than weather, so it stops +immediately and names the status instead of retrying against a certainty. **Exit codes**: diff --git a/scripts/audit/baseline.json b/scripts/audit/baseline.json index 0b632baf..69b3ff4f 100644 --- a/scripts/audit/baseline.json +++ b/scripts/audit/baseline.json @@ -16,11 +16,6 @@ "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)", "triaged": "2026-08-04" }, - "C1 tests/cli-reindex-vectors-guard.test.ts": { - "class": "SAFE", - "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)", - "triaged": "2026-08-04" - }, "C1 tests/consumer-audit-gate.test.ts": { "class": "SAFE", "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)", @@ -66,11 +61,6 @@ "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)", "triaged": "2026-08-04" }, - "C1 tests/vector-index-safety.test.ts": { - "class": "SAFE", - "reason": "emptiness paired with positive assertions in the same test file (per-file detail in the 2026-08-04 triage)", - "triaged": "2026-08-04" - }, "C3 npm:lint:fix": { "class": "NOT-A-GATE", "reason": "lint:fix is a developer convenience whose caller is a human", @@ -176,21 +166,6 @@ "reason": "secondary greps run after the exit-code gate has already read DOCTOR_EXIT", "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-14 222->233 (the timeout-minutes evidence comment above shifted +11; same statement — verified)" }, - "C5 src/core/operations.ts:51": { - "class": "SAFE-ACCUMULATOR", - "reason": "metadata spread identity; trust is set unconditionally after", - "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification)" - }, - "C5 src/core/operations.ts:48": { - "class": "SAFE-ACCUMULATOR", - "reason": "metadata spread identity; trust is set unconditionally after", - "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification)" - }, - "C5 src/core/operations.ts:45": { - "class": "SAFE-ACCUMULATOR", - "reason": "metadata spread identity; trust is set unconditionally after", - "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification)" - }, "C6 tests/hooks/session-summary.test.ts": { "class": "DEPENDENCY-PIN", "reason": "asserts the hook does not require sqlite-vec — an extension it never used, whose load took the whole Stop capture down on platforms without the prebuilt binary. The behaviour cannot be tested without hiding a package from node_modules, which is global state in a serial suite; what regressed is the dependency returning, and that is what this matches. Comments are stripped first so the explanatory block is not what it reads.", @@ -326,11 +301,6 @@ "reason": "Zod rejects {} for schemas with required fields", "triaged": "2026-08-10 (re-keyed 290->312: the stripNullProps helper added 22 lines above; the statement now wraps args in stripNullProps, which maps {} to {} and null properties to absent — the guard this triage relies on, Zod rejecting {} for required fields, is untouched); re-keyed 2026-08-13 (agentic-orchestration removal shifted lines up; same statement, classification unchanged); re-keyed 2026-08-14 266->268 (causal-convention sentences in the relation-type description; same statement — verified); re-keyed 2026-08-14 268->273 (UX-1 title property in remember inputSchema above; same safeParse statement — verified); re-keyed 2026-08-16 (A1c briefing import added one line above; statement verified at the new line — 145 changed OWNER from contradicts to supersedes, both siblings re-verified)" }, - "C5 src/core/operations.ts:126": { - "class": "SAFE-ACCUMULATOR", - "reason": "provenance spread identity: absent provenanceOverride means the caller supplied none, and spreading {} correctly leaves the source_host stamped on the line above; a spread of undefined would even be legal JS, so this cannot convert a failure into a default", - "triaged": "2026-08-12 (Phase 02 provenance); re-keyed 2026-08-13 (shifted +6 by the first-writer-wins comment added above, statement unchanged); re-keyed 2026-08-14 119->120 (UX-1 title passed into createEntity above; same provenance spread statement — verified)" - }, "C5 src/knowledge-graph.ts:313": { "class": "SAFE-ACCUMULATOR", "reason": "write-time signal-score inputs; empty means the caller passed no observations/tags, which is the correct identity for scoring", @@ -615,6 +585,31 @@ "class": "SAFE-ACCUMULATOR", "reason": "`relations` is optional on the imported bundle entry; empty means none to re-create. Newly visible after the C5 `||` regex fix.", "triaged": "2026-08-17 (surfaced by the C5 || regex fix)" + }, + "C5 src/core/operations.ts:53": { + "class": "SAFE-ACCUMULATOR", + "reason": "metadata spread identity; trust is set unconditionally after", + "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification) re-keyed 2026-08-18 (+2, review fixes added two imports to operations.ts; same statements — verified line by line against HEAD~1)" + }, + "C5 src/core/operations.ts:56": { + "class": "SAFE-ACCUMULATOR", + "reason": "metadata spread identity; trust is set unconditionally after", + "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification) re-keyed 2026-08-18 (+2, review fixes added two imports to operations.ts; same statements — verified line by line against HEAD~1)" + }, + "C5 src/core/operations.ts:59": { + "class": "SAFE-ACCUMULATOR", + "reason": "metadata spread identity; trust is set unconditionally after", + "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification) re-keyed 2026-08-18 (+2, review fixes added two imports to operations.ts; same statements — verified line by line against HEAD~1)" + }, + "C5 src/core/operations.ts:134": { + "class": "SAFE-ACCUMULATOR", + "reason": "provenance spread identity: absent provenanceOverride means the caller supplied none, and spreading {} correctly leaves the source_host stamped on the line above; a spread of undefined would even be legal JS, so this cannot convert a failure into a default", + "triaged": "2026-08-12 (Phase 02 provenance); re-keyed 2026-08-13 (shifted +6 by the first-writer-wins comment added above, statement unchanged); re-keyed 2026-08-14 119->120 (UX-1 title passed into createEntity above; same provenance spread statement — verified) re-keyed 2026-08-18 (+2, review fixes added two imports to operations.ts; same statements — verified line by line against HEAD~1)" + }, + "C6 tests/cli-reindex-vectors-guard.test.ts": { + "class": "SAFE-DATA-EXTRACTION", + "reason": "the added scan extracts the set of registered .option() flags from cli.ts and asserts that no user-facing advice string names a flag outside it. The text is the DATA (which flags exist), not the behaviour under test — and it caught two real defects on its first run: the two 'reindex --vectors' messages this commit fixes, plus the older 'memesh doctor --verbose', a flag that never existed. The existing cli-hints detector could not see either, because it reads only cli.ts and only .command() registrations.", + "triaged": "2026-08-18" } } -} \ No newline at end of file +} diff --git a/scripts/calibrate-transcript-dedup.mjs b/scripts/calibrate-transcript-dedup.mjs index daeb7a95..25483a29 100644 --- a/scripts/calibrate-transcript-dedup.mjs +++ b/scripts/calibrate-transcript-dedup.mjs @@ -161,7 +161,7 @@ const DISTINCT_PAIRS = [ ], [ { name: 'dimension-mismatch-skip', observations: ['embedAndStore skips the vector write when the provider dimension differs from the stored table dimension.'] }, - { name: 'reindex-vectors-flag', observations: ['Switching embedders needs reindex --vectors to rebuild the table at the new dimension; plain reindex cannot.'] }, + { name: 'reindex-generation-swap', observations: ['Switching embedders needs a plain reindex; it builds the new width in a staging generation and swaps once complete.'] }, ], ]; diff --git a/scripts/hooks/_generated/sqlite.js b/scripts/hooks/_generated/sqlite.js index a657023c..c753d196 100644 --- a/scripts/hooks/_generated/sqlite.js +++ b/scripts/hooks/_generated/sqlite.js @@ -30,7 +30,7 @@ function loadNodeSqlite() { } } const { DatabaseSync } = loadNodeSqlite(); -const BUSY_TIMEOUT_MS = 5000; +const BUSY_TIMEOUT_MS = 30_000; export class MemeshDatabase extends DatabaseSync { #depth = 0; constructor(path, options = {}) { diff --git a/src/core/doctor.ts b/src/core/doctor.ts index 5be3dd70..f6f2948c 100644 --- a/src/core/doctor.ts +++ b/src/core/doctor.ts @@ -1076,7 +1076,7 @@ function inspectHookActivity( const detail = err instanceof Error ? err.message : String(err); return createCheck('hook-activity', TITLE, 'fail', `Could not read hook activity from the database: ${detail}. Capture health is unknown, which is not the same as healthy.`, - 'Run `memesh doctor --verbose` for the full error, and check that ~/.memesh is readable and not out of disk.', + 'The error is quoted above. Check that ~/.memesh is readable and that the disk is not full.', { code: 'hook-activity.query-failed', params: { detail } }); } finally { try { if (db) closeDatabaseImpl(); } catch { /* best-effort */ } diff --git a/src/core/embedder.ts b/src/core/embedder.ts index 53d394b2..98c12650 100644 --- a/src/core/embedder.ts +++ b/src/core/embedder.ts @@ -89,18 +89,20 @@ export function isEmbeddingAvailable(caps: Capabilities = detectCapabilities()): * `true` unconditionally: no key is checked, no endpoint is reached, no * dimension is compared. A user whose key has expired, or who typed the * provider name before pasting the key, or whose Ollama is not running, gets - * `true` — and `memesh reindex --vectors` then drops every embedding in the - * database and finds it cannot write a single one back. That is the - * unrecoverable loss the refusal exists to prevent, caused by the command - * offered as the safe way through it. + * `true` — and a whole rebuild then runs to the end discovering, one entity at + * a time, that it cannot write a single vector. Nothing is destroyed by that + * any more (a generation is built beside the live index and only a complete one + * is promoted), so what this guard saves is the run itself: the wall clock, the + * provider bill on a paid embedder, and a staging table full of nothing. * * One real embedding call answers both halves that matter: whether anything * responds, and whether what it returns is the width `entities_vec` is about to * be declared with. A provider that answers at the wrong width would leave the * rebuilt index just as empty as no provider at all. * - * Deliberately not cached: it is called once, immediately before a destructive - * step, and a stale yes is exactly what must not happen here. + * Deliberately not cached: it is called once, immediately before committing to + * a long and possibly expensive run, and a stale yes is exactly what must not + * happen here. */ export async function canRefillVectorIndex(): Promise { const target = getEmbeddingDimension(); @@ -294,7 +296,22 @@ export type EmbedOutcome = * progress MUST branch on it; treating a non-throw as a write is the defect * this return value exists to remove. */ -export async function embedAndStore(entityId: number, text: string, caps?: Capabilities): Promise { +export async function embedAndStore( + entityId: number, + text: string, + caps?: Capabilities, + /** + * Which table to write into, and which dimension to accept. + * + * A reindex builds the NEXT generation in a staging table while the live one + * keeps answering queries, so during a rebuild the width being written is + * not the width `memesh_metadata.embedding_dimension` records — that still + * describes the live index, and comparing against it would reject every + * vector of the new generation as a mismatch. The caller that opened the + * generation is the one that knows both, so it passes both. + */ + target?: { table: string; dimension: number }, +): Promise { try { const embedding = await embedText(text, caps); if (!embedding) return 'no_embedding'; @@ -313,19 +330,20 @@ export async function embedAndStore(entityId: number, text: string, caps?: Capab "SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'" ).get() as { value: string } | undefined; - const expectedDim = storedDim ? parseInt(storedDim.value, 10) : 0; + const expectedDim = target ? target.dimension : (storedDim ? parseInt(storedDim.value, 10) : 0); const actualDim = embedding.length; if (expectedDim > 0 && actualDim !== expectedDim) { // A deliberate embedder switch (e.g. onto ollama at 768-dim against a - // table built at 384) lands here: plain `reindex` cannot change the - // table's dimension, so it would keep hitting this same branch forever. - // That is what `--vectors` is for. + // table built at 384) lands here. A full `memesh reindex` resolves it by + // building the new width in a staging generation and switching over once + // it is complete; a namespace-scoped run cannot, because a staging table + // holding one namespace would drop every other namespace's vectors. process.stderr.write( `MeMesh: Embedding dimension mismatch (got ${actualDim}, expected ${expectedDim}). ` + `Skipping vector write for entity ${entityId}. ` + `If you switched embedders, the vector index has to be rebuilt at the new ` + - `dimension: 'memesh reindex --vectors'.\n` + `dimension: run 'memesh reindex' with no --namespace.\n` ); return 'dimension_mismatch'; } @@ -335,15 +353,17 @@ export async function embedAndStore(entityId: number, text: string, caps?: Capab 'SELECT status FROM entities WHERE id = ?' ).get(entityId) as { status: string } | undefined; + const table = target?.table ?? 'entities_vec'; + if (!entity || entity.status === 'archived') { - db.prepare('DELETE FROM entities_vec WHERE rowid = ?').run(rowId); + db.prepare(`DELETE FROM ${table} WHERE rowid = ?`).run(rowId); return 'removed'; } const writeVector = db.transaction(() => { // sqlite-vec does not reliably honor INSERT OR REPLACE for vec0 primary keys. - db.prepare('DELETE FROM entities_vec WHERE rowid = ?').run(rowId); - db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)').run( + db.prepare(`DELETE FROM ${table} WHERE rowid = ?`).run(rowId); + db.prepare(`INSERT INTO ${table} (rowid, embedding) VALUES (?, ?)`).run( rowId, toVectorBlob(embedding) ); @@ -401,6 +421,84 @@ async function embedWithProvider(text: string, config: LLMConfig): Promise { + for (let attempt = 1; attempt <= PROVIDER_MAX_ATTEMPTS; attempt++) { + const timeout = AbortSignal.timeout(PROVIDER_TIMEOUT_MS); + let res: Response; + try { + // `redirect: 'error'` rather than fetch's default 'follow'. Both shipped + // providers answer 200 directly, so nothing legitimate is lost — and the + // Ollama base URL is an unvalidated env var, so following a redirect + // would let whatever answers for OLLAMA_HOST steer the request. undici + // strips Authorization across origins, but a 307 forwards the POST body, + // and that body is the user's memory text. + res = await fetch(url, { ...init, signal: timeout, redirect: 'error' }); + } catch (err) { + // A timeout and a dead socket are both worth one more try; on the last + // attempt say which it was rather than returning a bare null. + const timedOut = err instanceof Error && (err.name === 'TimeoutError' || err.name === 'AbortError'); + if (attempt === PROVIDER_MAX_ATTEMPTS) { + process.stderr.write( + `MeMesh: ${label} embedding request ${timedOut ? `timed out after ${PROVIDER_TIMEOUT_MS}ms` : 'failed'} ` + + `on attempt ${attempt}/${PROVIDER_MAX_ATTEMPTS}.\n`, + ); + return null; + } + await sleep(PROVIDER_BASE_BACKOFF_MS * attempt); + continue; + } + + if (res.ok) return res; + + const retryable = res.status === 429 || res.status >= 500; + if (!retryable) { + // Configuration, not weather. Name the status so the user can act. + process.stderr.write(`MeMesh: ${label} embedding request refused with HTTP ${res.status}.\n`); + return null; + } + if (attempt === PROVIDER_MAX_ATTEMPTS) { + process.stderr.write( + `MeMesh: ${label} embedding request still failing with HTTP ${res.status} ` + + `after ${PROVIDER_MAX_ATTEMPTS} attempts.\n`, + ); + return null; + } + const retryAfter = Number(res.headers.get('retry-after')); + const waitMs = Number.isFinite(retryAfter) && retryAfter > 0 + ? Math.min(retryAfter * 1000, 30_000) + : PROVIDER_BASE_BACKOFF_MS * attempt; + await sleep(waitMs); + } + return null; +} + +function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + async function embedWithOpenAI(text: string, config: LLMConfig): Promise { // SECURITY (CodeQL js/file-access-to-http): this function intentionally // sends entity text content to the OpenAI embeddings API. That data flow @@ -413,15 +511,15 @@ async function embedWithOpenAI(text: string, config: LLMConfig): Promise }; const embedding = data.data?.[0]?.embedding; @@ -434,12 +532,12 @@ async function embedWithOllama(text: string, config: LLMConfig): Promise(); + + if (useGeneration) { + const { resumed } = beginVectorGeneration(targetDim, provider); + generation = { table: 'entities_vec_next', dimension: targetDim }; + if (resumed) { + alreadyStaged = generationRowIds(); + process.stderr.write( + `MeMesh: resuming an unfinished ${targetDim}-dim rebuild — ${alreadyStaged.size} entities already embedded, ` + + `so the provider is only asked for the rest.\n`, + ); + } + } + // Get all active entities (optionally filtered by namespace) const namespaceFilter = opts?.namespace ? 'AND namespace = ?' : ''; const params = opts?.namespace ? [opts.namespace] : []; @@ -685,7 +734,12 @@ export async function reindex(opts?: { namespace?: string }): Promise= expected; + + if (complete) { + swapVectorGeneration(generation.dimension); + process.stderr.write( + `MeMesh: new ${generation.dimension}-dim index verified (${stagedRows} vectors) and switched in. ` + + `The previous index was replaced only after this check passed.\n`, + ); + } else { + process.stderr.write( + `MeMesh: the new index is incomplete (${stagedRows} of ${expected} vectors` + + `${failed > 0 ? `, ${failed} failures` : ''}), so it was NOT switched in — ` + + `your existing index is untouched and still answering queries. ` + + `Run 'memesh reindex' again to continue from where this stopped; ` + + `the ${stagedRows} embeddings already produced are kept and will not be re-requested.\n`, + ); + } + } + // The database has the final say. If a vector is missing here, it is missing // regardless of what the loop counted. const missingVectors = countMissingVectors(db, opts?.namespace); @@ -725,8 +809,9 @@ export async function reindex(opts?: { namespace?: string }): Promise 0) { process.stderr.write( `MeMesh: ${outcomes.dimension_mismatch} entities were skipped because the provider's ` + - `embedding dimension does not match this database's vector index. Rebuild it with ` + - `'memesh reindex --vectors'.\n` + `embedding dimension does not match this database's vector index. Rebuild it by ` + + `running 'memesh reindex' with no --namespace: a full run builds the new width ` + + `in a staging index and switches over once it is complete.\n` ); } @@ -740,6 +825,14 @@ export async function reindex(opts?: { namespace?: string }): Promise 0) { + // WRITE the marker, do not merely claim it is set. On a same-width rebuild + // nothing had set it, so the old wording announced a flag that did not + // exist and `memesh doctor` — whose only vector check reads this row — + // reported a healthy install over a graph still owed vectors. The swap used + // to delete this key itself, which pre-empted this decision on the + // width-change path; it no longer touches it, so this is the one owner. + const owedWidth = getStoredEmbeddingDimension(); + markReindexOwed(owedWidth, owedWidth, 'vectors-missing'); process.stderr.write( `MeMesh: ${missingVectorsDatabaseWide} active memories still have no vector` + `${opts?.namespace ? ' (across all namespaces)' : ''}, so the ` + diff --git a/src/db.ts b/src/db.ts index 1ef65c66..7babd77d 100644 --- a/src/db.ts +++ b/src/db.ts @@ -313,68 +313,14 @@ export function reindexFts(): { entities: number } { return { entities: c }; } -/** - * One-shot permission to destroy the vector index. - * - * `ensureVecTable` runs inside `openDatabase`, long before any command-line - * flag can be consulted, so the consent has to be recorded before the database - * is opened and read once when the decision is made. `memesh reindex --vectors` - * is the only thing that grants it, and only after confirming an embedding - * provider is actually available — granting it without one would drop the - * index and then have nothing to refill it with. - * - * One-shot on purpose: a long-lived process (the HTTP server) that opened the - * database once with consent must not carry it to a later reopen. - */ -let vectorRebuildConsentFor: string | null = null; - -/** - * Grant it, for ONE database. Returns whether the grant took. - * - * `canRefill` is a required argument rather than a check the caller is trusted - * to have already made, because the ordering is the whole safety property: - * dropping the index without a working embedding provider destroys every vector - * and leaves nothing able to regenerate them — the exact unrecoverable loss the - * refusal exists to prevent, caused by the command offered as the safe way - * through it. Two adjacent statements in the CLI would enforce that ordering - * only until someone moved one of them. Passed in rather than imported because - * `embedder.ts` imports this module. It is async because the only honest form - * of the check is to produce an embedding and measure it — see - * `canRefillVectorIndex`. - * - * `dbPath` narrows the grant to the database the caller meant. Without it the - * consent was a bare module-level boolean: in the HTTP server, or any process - * that opens more than one database, a grant recorded for A could be spent by - * an unrelated `openDatabase(B)` that happened to run first, and B's vectors — - * never consented to, never asked about — would be the ones dropped. - * Authorisation as wide as the process, for an action as narrow as one file. - */ -export async function allowVectorIndexRebuild( - dbPath: string, - canRefill: () => Promise -): Promise { - if (!(await canRefill())) return false; - vectorRebuildConsentFor = path.resolve(dbPath); - return true; -} - -/** - * Spend it. True only for the database it was granted for; cleared either way, - * so a grant never survives the open it was meant for. - */ -function consumeVectorRebuildConsent(resolvedPath: string): boolean { - const granted = vectorRebuildConsentFor; - vectorRebuildConsentFor = null; - return granted !== null && granted === path.resolve(resolvedPath); -} - /** * Ensure entities_vec table exists with the correct dimension. * - * A dimension change drops and recreates the table, destroying every stored - * vector, so it happens only with explicit consent — see - * {@link allowVectorIndexRebuild}. Without it the existing table is kept and - * the mismatch is reported. + * A dimension change deletes nothing. The existing index is kept and keeps + * answering queries; the mismatch is recorded as a rebuild owed, and + * `memesh reindex` builds the new width in a staging generation and swaps it + * in only once complete (see `beginVectorGeneration` / `swapVectorGeneration`). + * There is no destructive branch here to consent to any more. */ function ensureVecTable( db: MemeshDatabase, @@ -382,12 +328,6 @@ function ensureVecTable( targetDim: number, dimensionKnown = true ): void { - // Spend the consent here, before any early return, so it is scoped to ONE - // open rather than to one rebuild. Consuming it only on the branch that uses - // it would leave it armed whenever the dimensions happened to agree — and - // the next open in that process could be a different database. - const rebuildConsented = consumeVectorRebuildConsent(resolvedPath); - const storedDim = db.prepare( "SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'" ).get() as { value: string } | undefined; @@ -448,22 +388,33 @@ function ensureVecTable( // So the refusal follows the consequence instead: a stale-but-correct index // degrades to "embeddings keep working as before" and is recoverable by // restoring the config, while a dropped one is gone, and on an API embedder - // has to be paid for a second time. Anything unrecoverable needs consent, and - // `memesh reindex --vectors` is where that consent is given — it drops and - // recreates the table at the new dimension and immediately refills it. - if ( - vecExists && - currentDim !== 0 && - currentDim !== targetDim && - !rebuildConsented - ) { + // has to be paid for a second time. A dimension change now drops nothing at + // all, so there is no longer any consent to ask for. + // + // This used to be the one destructive step in the whole open path: with + // consent recorded by `reindex --vectors`, the DROP committed here — before + // the refill loop had even started — so a run that died at 60% left 40% of + // the graph with no vector at all, and on a paid provider the finished 60% + // had to be bought a second time. The consent flow made that loss deliberate + // rather than accidental, which is not the same as making it acceptable. + // + // Generations replace it (see `beginVectorGeneration` and + // `swapVectorGeneration`): the new index is built in a staging table at the + // new width while this one keeps answering queries, and the live table is + // only ever replaced by a complete, verified generation inside one + // transaction. So the honest thing to do on a dimension change is nothing at + // all — record that a rebuild is owed and let `reindex` do it safely. + if (vecExists && currentDim !== 0 && currentDim !== targetDim) { process.stderr.write( `MeMesh: this database records ${currentDim}-dim embeddings but the current ` + - `configuration asks for ${targetDim}. Keeping the existing vector index rather ` + - `than rebuilding it, because rebuilding deletes every stored vector. ` + - `If the configuration is wrong, fix it. If you meant to switch embedders, run ` + - `'memesh reindex --vectors' to rebuild the index at ${targetDim} and regenerate.\n` + `configuration asks for ${targetDim}. Nothing is deleted — the index is kept ` + + `so a rebuild can resume — but semantic search is OFF until the rebuild ` + + `finishes, because a ${targetDim}-dim query cannot be matched against a ` + + `${currentDim}-dim index; recall is on keyword search alone meanwhile. ` + + `Run 'memesh reindex' to build the ${targetDim}-dim index alongside it and ` + + `switch over once it is complete.\n` ); + markReindexOwed(currentDim, targetDim, 'dimension-change'); return; } @@ -473,21 +424,12 @@ function ensureVecTable( // skipped this branch entirely, created an empty one and stamped the new // dimension. `memesh doctor` then reported a healthy install over a silently // emptied index. + // Only two cases reach here now: no table yet, or a table already at the + // target width. Both are creation-or-nothing, so there is no DROP left in + // the open path at all — the branch that used to drop a mismatched table is + // gone rather than commented out, because the dimension-change case returns + // above and could never enter it. db.transaction(() => { - if (vecExists) { - process.stderr.write( - `MeMesh: Embedding dimension changed (${currentDim} → ${targetDim}). Rebuilding vector index.\n` + - `MeMesh: Old embeddings deleted. Run 'memesh reindex' to regenerate vectors for all entities.\n` + - `MeMesh: Without reindex, only newly accessed entities will be embedded.\n` - ); - db.exec('DROP TABLE entities_vec'); - // Persist the reindex-needed state so `memesh doctor` can surface it - // even after the process that dropped the table has exited. - db.prepare( - "INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('pending_reindex', ?)" - ).run(JSON.stringify({ from: currentDim, to: targetDim, droppedAt: new Date().toISOString() })); - } - db.exec(` CREATE VIRTUAL TABLE IF NOT EXISTS entities_vec USING vec0( embedding float[${targetDim}] @@ -500,7 +442,242 @@ function ensureVecTable( }).immediate(); } -export function getPendingReindexInfo(): { from: number; to: number; droppedAt: string } | null { +// ============================================================================= +// Vector index generations — build beside, verify, swap atomically +// ============================================================================= +// +// `entities_vec` is a vec0 virtual table keyed only on rowid, with its width +// fixed in the DDL (`float[N]`). Two generations cannot live in one such table, +// which is why changing embedder used to mean dropping every vector first and +// hoping the refill finished: a run that died at 60% left 40% of the graph +// unsearchable, and on a paid provider the completed 60% had to be bought +// again. +// +// A second table is the way out, and three facts were MEASURED against +// sqlite-vec v0.1.9 before this was built rather than assumed: +// +// 1. `ALTER TABLE ... RENAME` does NOT work on a vec0 table. It reports +// success and leaves the table unreadable — vec0 keeps four shadow tables +// (`_chunks`, `_info`, `_rowids`, `_vector_chunks00`) and the rename +// touches none of them, so the first read fails with +// `no such table: main._rowids`. Swapping by rename is not available. +// 2. Two vec0 tables of DIFFERENT widths coexist happily. So the new +// generation can be built at the new dimension while the old one keeps +// answering every query. +// 3. DROP + CREATE + copy inside one transaction really does roll back: with +// the swap forced to fail before COMMIT, a FRESH connection still read the +// original table at its original width with all rows present. (Checked on +// the data, not on `sqlite_master` — a table NAME returning proves +// nothing about the vectors.) +// +// So: build into `entities_vec_next`, verify it, then one immediate +// transaction drops the old table, recreates it at the new width, copies the +// rows across and drops the staging table. Every reader keeps the name it +// already hardcodes; none of them needs to know generations exist. + +const GENERATION_TABLE = 'entities_vec_next'; +const GENERATION_KEY = 'vector_generation'; + +/** What a half-built generation records about itself, so a resume can tell + * whether it is still resumable. A generation built by a different provider + * or at a different width is not a generation to continue — it is one to + * discard, because its vectors are not comparable with the ones we would add. */ +export interface VectorGenerationInfo { + dimension: number; + provider: string; + startedAt: string; +} + +export function getVectorGenerationInfo(): VectorGenerationInfo | null { + if (!db) return null; + try { + const row = db.prepare( + 'SELECT value FROM memesh_metadata WHERE key = ?' + ).get(GENERATION_KEY) as { value: string } | undefined; + if (!row) return null; + const parsed = JSON.parse(row.value) as Partial; + if (typeof parsed.dimension !== 'number' || typeof parsed.provider !== 'string') return null; + return { dimension: parsed.dimension, provider: parsed.provider, startedAt: String(parsed.startedAt ?? '') }; + } catch { + return null; + } +} + +/** Rows already embedded into the staging generation, so a resume asks the + * provider only for what it has not paid for yet. */ +export function generationRowIds(): Set { + const out = new Set(); + if (!db) return out; + // Ask whether the table exists rather than catching the failure of reading + // it. This number decides whether a finished generation is promoted and + // which entities a resume re-buys, so "the read failed" must not be able to + // arrive as "nothing is staged" — a locked database or a corrupt vec0 shadow + // table would otherwise be laundered into a verdict about work. + const exists = (db.prepare( + "SELECT COUNT(*) AS c FROM sqlite_master WHERE type IN ('table','view') AND name = ?" + ).get(GENERATION_TABLE) as { c: number }).c > 0; + if (!exists) return out; + const rows = db.prepare(`SELECT rowid AS id FROM ${GENERATION_TABLE}`).all() as Array<{ id: number | bigint }>; + for (const r of rows) out.add(Number(r.id)); + return out; +} + +/** + * Open a generation at `dimension`, reusing a compatible half-built one. + * + * Returns whether the staging table was reused, so the caller can say + * "resuming" rather than implying a fresh start it did not make. + */ +export function beginVectorGeneration(dimension: number, provider: string): { resumed: boolean } { + if (!Number.isInteger(dimension) || dimension <= 0 || dimension > 65536) { + throw new Error(`Refusing to build a vector index at width ${String(dimension)}.`); + } + const conn = getDatabase(); + const existing = getVectorGenerationInfo(); + const stagingExists = (conn.prepare( + "SELECT COUNT(*) AS c FROM sqlite_master WHERE type IN ('table','view') AND name = ?" + ).get(GENERATION_TABLE) as { c: number }).c > 0; + + const compatible = stagingExists && existing !== null + && existing.dimension === dimension && existing.provider === provider; + + if (stagingExists && !compatible) { + // A leftover from a different provider or width. Its vectors live in a + // different space, so mixing them with new ones would be the drift this + // whole mechanism exists to prevent. + discardVectorGeneration(); + } + + // `startedAt` is the generation's ORIGINAL start, kept across a resume. It + // used to be rewritten on every call, including the resume path, which + // destroyed the only datum able to answer "is this staged vector older than + // the entity's newest observation" — the question a resume has to ask before + // it trusts a row it did not write. + const startedAt = compatible && existing ? existing.startedAt : new Date().toISOString(); + + conn.transaction(() => { + conn.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS ${GENERATION_TABLE} USING vec0(embedding float[${dimension}])`); + conn.prepare( + 'INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)' + ).run(GENERATION_KEY, JSON.stringify({ dimension, provider, startedAt })); + }).immediate(); + + return { resumed: compatible }; +} + +/** Throw away a half-built generation, leaving the live index untouched. */ +export function discardVectorGeneration(): void { + const conn = getDatabase(); + conn.transaction(() => { + conn.exec(`DROP TABLE IF EXISTS ${GENERATION_TABLE}`); + conn.prepare('DELETE FROM memesh_metadata WHERE key = ?').run(GENERATION_KEY); + }).immediate(); +} + +/** + * Promote the staging generation to be the live index, or change nothing. + * + * One immediate transaction. A failure anywhere rolls the whole thing back and + * the previous index is still the live one — measured, not assumed (see the + * header note above). + * + * The live table is NOT simply overwritten by the staging table. Two + * populations exist only in the live index, and a plain + * `INSERT … SELECT FROM staging` silently discarded both: + * + * 1. Rows a concurrent writer added while the rebuild ran. Every writer + * except the rebuild loop targets the live table (`embedAndStore`'s + * `target` defaults to it), the loop works from an entity list snapshotted + * before it started, and the seven capture hooks do not stop for a + * rebuild. A memory captured mid-rebuild lost its vector outright; one + * whose observations were EDITED mid-rebuild was worse, because the swap + * replaced the fresh vector with the staged pre-edit one and + * `countMissingVectors` cannot see a row that is present but stale. + * So: rows still active and absent from staging are carried across — + * but only when the live index is already at this width, because vectors + * of a different width are not comparable and there is nothing to carry + * (a concurrent write during a width change is refused as + * `dimension_mismatch`, so that population is empty by construction). + * 2. Conversely, a row staged for an entity that has since been archived or + * forgotten. `archiveEntity`/`deleteEntity` delete from the live table + * only — they do not know a staging table exists — and the rebuild loop + * lists `status = 'active'`, so it never revisits the entity to remove it. + * Promoting that row resurrected a memory the user deleted. So staging is + * pruned of non-active rows FIRST, which is also what lets the caller + * compare counts for equality instead of with `>=`: the orphan was the + * reason staging could legitimately hold MORE rows than the run owed. + * + * `pending_reindex` is deliberately NOT touched here. It has one owner — + * `reindex()`, which measures the finished index with `countMissingVectors` + * after this returns and either clears the marker or writes it. Clearing it + * here pre-empted that decision: on a width change the marker was set at open + * and this transaction deleted it before the measurement could keep it, + * leaving `memesh doctor` (whose only vector check reads this row) quiet over + * a graph that was still owed vectors. + */ +export function swapVectorGeneration(dimension: number): void { + // The width is interpolated into DDL because SQLite cannot parameterise a + // type. Every caller passes a value from a fixed table, but this function is + // exported and a TypeScript annotation is not a runtime check. + if (!Number.isInteger(dimension) || dimension <= 0 || dimension > 65536) { + throw new Error(`Refusing to build a vector index at width ${String(dimension)}.`); + } + const conn = getDatabase(); + conn.transaction(() => { + conn.exec( + `DELETE FROM ${GENERATION_TABLE} WHERE rowid NOT IN ` + + `(SELECT id FROM entities WHERE status = 'active')`, + ); + + const storedDim = Number( + (conn.prepare( + "SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'" + ).get() as { value: string } | undefined)?.value ?? 0, + ); + if (storedDim === dimension) { + conn.exec( + `INSERT INTO ${GENERATION_TABLE} (rowid, embedding) ` + + `SELECT v.rowid, v.embedding FROM entities_vec v ` + + `WHERE v.rowid IN (SELECT id FROM entities WHERE status = 'active') ` + + `AND v.rowid NOT IN (SELECT rowid FROM ${GENERATION_TABLE})`, + ); + } + + conn.exec('DROP TABLE IF EXISTS entities_vec'); + conn.exec(`CREATE VIRTUAL TABLE entities_vec USING vec0(embedding float[${dimension}])`); + conn.exec(`INSERT INTO entities_vec (rowid, embedding) SELECT rowid, embedding FROM ${GENERATION_TABLE}`); + conn.exec(`DROP TABLE ${GENERATION_TABLE}`); + conn.prepare( + 'INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES (?, ?)' + ).run('embedding_dimension', String(dimension)); + conn.prepare('DELETE FROM memesh_metadata WHERE key = ?').run(GENERATION_KEY); + }).immediate(); +} + +/** + * The width `entities_vec` was actually built at, or 0 when nothing is + * recorded. This is the STORED width, not the configured one — the two + * disagree for the whole window between switching embedder and finishing a + * rebuild, and that disagreement is exactly what callers need to detect. + */ +export function getStoredEmbeddingDimension(): number { + if (!db) return 0; + const row = db.prepare( + "SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'" + ).get() as { value: string } | undefined; + return row ? Number(row.value) || 0 : 0; +} + +export interface PendingReindexInfo { + from: number; + to: number; + /** When the need was first NOTICED. Nothing is dropped any more — this field + * was called `droppedAt` while naming a deletion that no longer happens. */ + noticedAt: string; + reason: 'dimension-change' | 'vectors-missing'; +} + +export function getPendingReindexInfo(): PendingReindexInfo | null { if (!db) return null; try { const row = db.prepare( @@ -512,6 +689,36 @@ export function getPendingReindexInfo(): { from: number; to: number; droppedAt: } } +/** + * Record that this database is owed a vector rebuild. + * + * Written only when the need is new or has changed, for two reasons. Every + * process that opens a mismatched database used to rewrite this row, which put + * a write — and therefore the write lock — on the open path of every hook + * invocation and every MCP handshake. And overwriting it each time meant + * "since when has this been owed" could never be answered: the timestamp always + * read as just now. + */ +export function markReindexOwed( + from: number, + to: number, + reason: PendingReindexInfo['reason'], +): void { + if (!db) return; + const existing = getPendingReindexInfo(); + if (existing && existing.from === from && existing.to === to && existing.reason === reason) { + return; + } + db.prepare( + "INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('pending_reindex', ?)" + ).run(JSON.stringify({ + from, + to, + reason, + noticedAt: existing?.noticedAt ?? new Date().toISOString(), + } satisfies PendingReindexInfo)); +} + export function clearPendingReindexFlag(): void { if (!db) return; db.prepare("DELETE FROM memesh_metadata WHERE key = 'pending_reindex'").run(); diff --git a/src/storage/sqlite.ts b/src/storage/sqlite.ts index 112efed7..8db87951 100644 --- a/src/storage/sqlite.ts +++ b/src/storage/sqlite.ts @@ -107,8 +107,19 @@ export interface OpenOptions { * * Set through PRAGMA rather than the constructor's `timeout` option, which is * Node >= 24 and would raise the floor for nothing. + * + * Raised from 5000 once one bounded maintenance operation grew past it. + * `swapVectorGeneration` copies every embedding inside a single transaction — + * that copy IS the atomicity guarantee, because a `vec0` table cannot be + * renamed — and the copy is O(rows): measured at ~272-302us per row (768-dim, + * vec0-only database on an SSD, so a floor), i.e. 5.4s at 20k vectors and 9.1s + * at 30k. Against the old 5s a rebuild on a graph past roughly 16.5k vectors + * did not make concurrent writers WAIT, it made them FAIL — reproduced, a hook + * writing during a 30k swap lost its capture after 5213ms. 30s holds for a + * graph around 100k vectors, and a writer that waits is the whole point of this + * number. */ -const BUSY_TIMEOUT_MS = 5000; +const BUSY_TIMEOUT_MS = 30_000; /** What a `transaction()` wrapper can be called as. */ export interface TransactionFunction { diff --git a/src/transports/cli/cli.ts b/src/transports/cli/cli.ts index 90a53e6b..657355c7 100644 --- a/src/transports/cli/cli.ts +++ b/src/transports/cli/cli.ts @@ -5,7 +5,7 @@ import { randomBytes } from 'crypto'; import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; -import { openDatabase, closeDatabase, getDatabase, reindexFts, allowVectorIndexRebuild } from '../../db.js'; +import { openDatabase, closeDatabase, getDatabase, reindexFts } from '../../db.js'; import { remember, recallWithConflicts, forget, exportMemories, importMemories, learn, reindex, setPinned } from '../../core/operations.js'; import { readConfig, writeConfig, maskApiKey, detectCapabilities } from '../../core/config.js'; import { MAX_LANGUAGE_LENGTH, languageValueError } from '../../core/output-language.js'; @@ -2285,11 +2285,6 @@ program .description('Regenerate vector embeddings for all entities (--fts rebuilds the keyword index instead)') .option('--namespace ', 'Reindex only entities in this namespace') .option('--fts', 'Rebuild the full-text keyword index instead of the vector index') - .option( - '--vectors', - 'Also rebuild the vector index at the configured dimension. DESTRUCTIVE: drops every ' + - 'stored embedding first. Needed only when switching embedding providers.' - ) .option('--json', 'Output as JSON') .action(async (opts) => { requireOneOf(opts.namespace, NAMESPACES, '--namespace'); @@ -2307,10 +2302,6 @@ program // from a bad release. This is the way out, and `memesh doctor` points // here when it detects it. if (opts.fts) { - if (opts.vectors) { - console.error('❌ --fts and --vectors rebuild different indexes. Run them separately.'); - process.exit(1); - } await withDatabase(async () => { const { entities } = reindexFts(); if (opts.json) { @@ -2322,47 +2313,24 @@ program return; } - if (opts.vectors) { - if (opts.namespace) { - // `entities_vec` is one table for the whole database, so the rebuild - // drops EVERY namespace's vectors — while `--namespace` would refill - // only one. The other namespaces would lose their embeddings - // permanently and silently, outside anything the user asked for. - // Same family as dropping without a way to refill: the destruction - // is wider than the repair. - console.error( - '❌ --vectors rebuilds the whole vector index, which is shared by every\n' + - ' namespace, so it cannot be limited to one. Combining it with\n' + - ' --namespace would delete the other namespaces\' embeddings and never\n' + - ' regenerate them. Run `memesh reindex --vectors` on its own, or drop\n' + - ' --vectors to reindex just this namespace at the current dimension.' - ); - process.exit(1); - } - // The drop happens inside openDatabase, so consent has to be recorded - // before the database is opened. `allowVectorIndexRebuild` refuses to - // record it unless something can refill the index afterwards — see - // there for why that check is its argument rather than ours. - // - // `canRefillVectorIndex`, not `isEmbeddingAvailable`: the latter - // reports which provider the config NAMES, and says yes for openai and - // ollama without checking a key, reaching an endpoint, or comparing a - // dimension. Authorising a drop on that answer is how an expired key - // turns this command into permanent data loss. The probe embeds one - // string and measures it. - // - // `getDbPath()` is the same path `withDatabase` below opens with; the - // consent is refused inside `openDatabase` if they ever disagree. - if (!(await allowVectorIndexRebuild(getDbPath(), canRefillVectorIndex))) { - console.error( - '❌ Could not produce a test embedding at this database\'s vector width, so\n' + - ' the index was left untouched. Rebuilding it deletes every stored\n' + - ' embedding, and nothing here could regenerate them.\n' + - ' Check that Ollama is running (or that your OpenAI API key is valid) —\n' + - ' then run this again. `memesh doctor` reports which provider is configured.' - ); - process.exit(1); - } + // A full rebuild builds a new generation before anything is replaced, so + // it is no longer destructive — but a provider that cannot produce a + // vector at the configured width will fill nothing, and the run would + // spend its whole length discovering that. `canRefillVectorIndex` + // embeds one probe string and measures it, which is the only honest + // form of the question. `isEmbeddingAvailable` cannot answer it: it + // reports which provider the CONFIG names and says yes for openai and + // ollama without checking a key, reaching an endpoint or comparing a + // width. + if (!opts.namespace && !(await canRefillVectorIndex())) { + console.error( + '❌ Could not produce a test embedding at the configured vector width, so\n' + + ' nothing was rebuilt. Your existing index is untouched and still\n' + + ' answering queries.\n' + + ' Check that Ollama is running (or that your OpenAI API key is valid) —\n' + + ' then run this again. `memesh doctor` reports which provider is configured.' + ); + process.exit(1); } await withDatabase(async () => { diff --git a/tests/cli-reindex-vectors-guard.test.ts b/tests/cli-reindex-vectors-guard.test.ts index 8de88c9f..c865c53d 100644 --- a/tests/cli-reindex-vectors-guard.test.ts +++ b/tests/cli-reindex-vectors-guard.test.ts @@ -1,15 +1,23 @@ /** - * `memesh reindex --vectors` destroys data on purpose, so the two ways it can - * destroy MORE than the user asked for are refused at the CLI, before anything - * opens the database. + * `memesh reindex` refuses before it destroys anything, and nothing points a + * user at a flag that no longer exists. * - * 1. `--vectors --namespace X` — `entities_vec` is ONE table for the whole - * database, so the rebuild drops every namespace's vectors, while - * `--namespace` would refill only X. The other namespaces lose their - * embeddings permanently and silently, outside anything the user asked - * for: the destruction is wider than the repair. + * `--vectors` used to consent to dropping every stored embedding before the + * refill began. Generations removed that step — a rebuild now happens beside + * the live index and replaces it only when complete — so the flag has no + * meaning left and is gone rather than kept as a no-op. Three properties + * survive that removal and are pinned here: * - * 2. `--vectors --fts` — two different indexes, one flag each. + * 1. The retired flag is refused AS AN UNKNOWN OPTION, and refuses before + * anything opens the database. The status code alone cannot show this: a + * plain `reindex` also exits 1 in this fixture (the pre-flight probe finds + * no usable provider), so only the parser's own message distinguishes + * "retired" from "failed for some other reason" — and without that + * assertion the test passed even with the flag re-added as a no-op. + * 2. A run that regenerated nothing does not print a tick or exit 0. + * 3. No shipped source file tells a user to run a flag the CLI rejects. That + * is a scan, not a spawn, because the two offending strings lived in + * `src/core/*` where the existing CLI-hint detector never looked. * * Spawns the built CLI with HOME pointed at a tmpdir, because the guards live * in the command's action and the ordering relative to `openDatabase` is the @@ -26,7 +34,7 @@ import { MemeshDatabase as Database } from '../src/storage/sqlite.js'; const require = createRequire(import.meta.url); -describe('memesh reindex --vectors refuses to destroy more than asked', () => { +describe('memesh reindex refuses before it destroys anything', () => { let home: string; let dbPath: string; @@ -122,25 +130,25 @@ describe('memesh reindex --vectors refuses to destroy more than asked', () => { return n; } - it('refuses --vectors with --namespace, and leaves the index untouched', () => { + it('the retired --vectors flag is rejected, and rejects before touching anything', () => { + // `--vectors` existed to consent to dropping every stored embedding before + // the refill began. Generations removed that step — a rebuild now happens + // beside the live index and replaces it only when complete — so the flag + // has no meaning left and is gone rather than kept as a no-op. What must + // NOT happen is that a script still passing it destroys anything on the + // way to the error. seedVectorIndex(); - const result = run(['reindex', '--vectors', '--namespace', 'personal']); + const result = run(['reindex', '--vectors']); - expect(result.status, 'a refusal must not exit 0').toBe(1); - expect(result.stderr).toContain('--namespace'); - // The point of the refusal: nothing was dropped on the way to it. - expect(vectorCount(), 'vectors were destroyed by a command that refused').toBe(1); - }); - - it('refuses --vectors with --fts', () => { - seedVectorIndex(); - - const result = run(['reindex', '--vectors', '--fts']); - - expect(result.status).toBe(1); - expect(result.stderr).toContain('separately'); - expect(vectorCount()).toBe(1); + expect(result.status, 'an unknown flag must not exit 0').toBe(1); + // The discriminating assertion. `reindex` with NO flag also exits 1 here, + // so without this line the test passes whether or not the flag was retired. + expect( + result.stderr, + 'the flag was accepted rather than refused by the parser', + ).toContain("unknown option '--vectors'"); + expect(vectorCount(), 'a rejected command destroyed vectors').toBe(1); }); it('does not print a tick and exit 0 when it regenerated nothing', () => { @@ -177,12 +185,16 @@ describe('memesh reindex --vectors refuses to destroy more than asked', () => { const result = run(['reindex']); expect(result.status, 'a run that regenerated nothing exited 0').toBe(1); - expect(result.stdout).toContain('Reindex incomplete'); expect(result.stdout, 'a tick over a run that wrote nothing').not.toContain('✅'); - // The line that tells the user what actually happened, rather than - // "0 memories still have no vector" — true, and completely misleading. - expect(result.stdout).toContain('Could not be regenerated'); - // And the stale vector is still there. The run failed; it did not destroy. + // It now refuses BEFORE spending the run, and names the actual HTTP status + // instead of a generic failure — the pre-flight probe embeds one string, + // and a 401 is configuration, not weather. Previously this same setup ran + // the whole corpus, failed every write, and reported "0 memories still + // have no vector", which was true and completely misleading. + expect(result.stderr).toContain('nothing was rebuilt'); + expect(result.stderr, 'the user was not told their index survived').toContain('untouched'); + // And the stale vector is still there, for a stronger reason than before: + // a refused rebuild never publishes at all. expect(vectorCount()).toBe(1); }); @@ -193,7 +205,53 @@ describe('memesh reindex --vectors refuses to destroy more than asked', () => { // Exit 0 or a genuine "no embedding provider" failure are both fine here; // what must NOT happen is the argument refusal. - expect(result.stderr).not.toContain('--vectors rebuilds the whole vector index'); - expect(result.stderr).not.toContain('rebuild different indexes'); + expect(result.stderr).not.toContain('unknown option'); + }); +}); + +describe('no shipped source tells a user to run a flag the CLI rejects', () => { + // The two worst defects of the --vectors removal were not in the CLI at all. + // `src/core/embedder.ts` and `src/core/operations.ts` each printed "run + // 'memesh reindex --vectors'" on a dimension mismatch — the exact situation + // the generation mechanism exists to handle — so the user was handed a + // command that exits 1 with `error: unknown option '--vectors'`. The existing + // detector (tests/cli-hints-name-real-commands.test.ts) could not see it: it + // reads only cli.ts and matches only `.command('name')` registrations, never + // options and never src/core/*. This closes both gaps: options, everywhere + // that prints advice. + const ADVICE_SOURCES = [ + 'src/transports/cli/cli.ts', + 'src/core/embedder.ts', + 'src/core/operations.ts', + 'src/core/doctor.ts', + 'src/db.ts', + ]; + + it('every "memesh --flag" in a user-facing string is a flag cli.ts registers', () => { + const repoRoot = path.resolve(__dirname, '..'); + const cli = fs.readFileSync(path.join(repoRoot, 'src/transports/cli/cli.ts'), 'utf8'); + const registered = new Set( + [...cli.matchAll(/\.option\(\s*'(--[a-z][a-z0-9-]*)/g)].map((m) => m[1]), + ); + expect( + registered.size, + 'the .option() extraction stopped matching cli.ts — fix the pattern, do not delete the test', + ).toBeGreaterThan(5); + + const offenders: string[] = []; + for (const rel of ADVICE_SOURCES) { + const text = fs.readFileSync(path.join(repoRoot, rel), 'utf8'); + text.split('\n').forEach((line, i) => { + // Comments talk to maintainers, not users; only shipped strings count. + if (/^\s*(\/\/|\*|\/\*)/.test(line)) return; + for (const m of line.matchAll(/memesh\s+[a-z][a-z-]*\s+(--[a-z][a-z0-9-]*)/g)) { + if (!registered.has(m[1])) offenders.push(`${rel}:${i + 1} recommends ${m[1]}`); + } + }); + } + expect( + offenders, + `these lines tell a user to run a flag the CLI would reject:\n${offenders.join('\n')}`, + ).toEqual([]); }); }); diff --git a/tests/reindex-reports-what-happened.test.ts b/tests/reindex-reports-what-happened.test.ts index cd1c925c..4c5e3840 100644 --- a/tests/reindex-reports-what-happened.test.ts +++ b/tests/reindex-reports-what-happened.test.ts @@ -71,7 +71,7 @@ describe('Feature: reindex reports what it actually wrote', () => { function markReindexPending(): void { getDatabase() .prepare("INSERT OR REPLACE INTO memesh_metadata (key, value) VALUES ('pending_reindex', ?)") - .run(JSON.stringify({ from: 384, to: OPENAI_DIM, droppedAt: '2026-01-01T00:00:00.000Z' })); + .run(JSON.stringify({ from: 384, to: OPENAI_DIM, reason: 'dimension-change', noticedAt: '2026-01-01T00:00:00.000Z' })); } function pendingReindexRow(): unknown { @@ -84,6 +84,16 @@ describe('Feature: reindex reports what it actually wrote', () => { return (getDatabase().prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c; } + /** Rows in the staging generation. Absent table means zero — a rebuild that + * completed swapped it away, which is the successful outcome. */ + function stagedVectorCount(): number { + try { + return (getDatabase().prepare('SELECT count(*) AS c FROM entities_vec_next').get() as { c: number }).c; + } catch { + return 0; + } + } + beforeEach(() => { dir = fs.mkdtempSync(path.join(os.tmpdir(), 'memesh-reindex-')); dbPath = path.join(dir, 'test.db'); @@ -164,10 +174,18 @@ describe('Feature: reindex reports what it actually wrote', () => { expect(pendingReindexRow()).toBeUndefined(); }); - it('a partial run keeps the flag', async () => { + it('a partial run leaves the LIVE index untouched and keeps its work for a resume', async () => { // Half the corpus embedded is not the same as all of it, and it is the // case most likely to happen for real: a provider that rate-limits or // drops connections part way through a long run. + // + // The contract this asserts is the generation one, and it is stronger than + // what came before. A rebuild now writes into a staging table and is + // promoted only when complete, so a partial run publishes NOTHING: the + // live index still holds exactly what it held before, rather than becoming + // a half-new, half-old mix whose distances are no longer comparable. The + // embeddings that did succeed are kept in staging so the next run does not + // ask a paid provider for them twice. seedEntity('alpha', 'first memory'); seedEntity('beta', 'second memory'); markReindexPending(); @@ -177,12 +195,34 @@ describe('Feature: reindex reports what it actually wrote', () => { expect(result.embedded).toBe(1); expect(result.outcomes.dimension_mismatch).toBe(1); - expect(vectorCount()).toBe(1); - expect(result.missingVectors).toBe(1); + expect(vectorCount(), 'a partial rebuild published into the live index').toBe(0); + expect(stagedVectorCount(), 'the embedding that succeeded was thrown away').toBe(1); + expect(result.missingVectors).toBe(2); expect(result.pendingReindexCleared).toBe(false); expect(pendingReindexRow()).toBeDefined(); }); + it('a resumed run asks the provider only for what the first run did not get', async () => { + // The money half of the guarantee: on a paid provider, the embeddings a + // failed run already bought must not be bought again. + seedEntity('alpha', 'first memory'); + seedEntity('beta', 'second memory'); + let requests = 0; + serveEmbeddings((input) => { requests++; return input.includes('first') ? OPENAI_DIM : 8; }); + await reindex(); + expect(requests).toBe(2); + expect(stagedVectorCount()).toBe(1); + + // Second run: the provider now works for both, but only ONE new request + // should be made — alpha is already staged. + requests = 0; + serveEmbeddings(() => { requests++; return OPENAI_DIM; }); + const second = await reindex(); + expect(requests, 'a resume re-bought an embedding it already had').toBe(1); + expect(vectorCount(), 'the completed generation was not switched in').toBe(2); + expect(second.pendingReindexCleared).toBe(true); + }); + it('an entity with nothing to embed does not hold the flag open forever', async () => { // The mirror-image failure. "Every active entity must have a vector" is // too strong: an entity whose observations are all whitespace can never @@ -237,8 +277,13 @@ describe('Feature: reindex reports what it actually wrote', () => { const result = await reindex(); - expect(result.missingVectors).toBe(1); - expect(result.missingVectorsDatabaseWide).toBe(1); + // Both, not one: the entity that embedded went into the staging + // generation, and a run with a failure is not promoted — so the live index + // published nothing and neither namespace has a vector in it yet. The + // guard still does its job, which is what this test is for: a genuine + // shortfall shows rather than being rounded to success. + expect(result.missingVectors).toBe(2); + expect(result.missingVectorsDatabaseWide).toBe(2); expect(result.pendingReindexCleared).toBe(false); }); diff --git a/tests/storage/sqlite-driver.test.ts b/tests/storage/sqlite-driver.test.ts index f96544bd..34550efc 100644 --- a/tests/storage/sqlite-driver.test.ts +++ b/tests/storage/sqlite-driver.test.ts @@ -85,7 +85,7 @@ describe('Feature: the SQLite driver', () => { // this number turns every overlap into a lost capture, silently. const db = new MemeshDatabase(dbPath); try { - expect(db.prepare('PRAGMA busy_timeout').get()).toMatchObject({ timeout: 5000 }); + expect(db.prepare('PRAGMA busy_timeout').get()).toMatchObject({ timeout: 30_000 }); } finally { db.close(); } @@ -97,7 +97,7 @@ describe('Feature: the SQLite driver', () => { seed(); const db = new MemeshDatabase(dbPath, { readOnly: true }); try { - expect(db.prepare('PRAGMA busy_timeout').get()).toMatchObject({ timeout: 5000 }); + expect(db.prepare('PRAGMA busy_timeout').get()).toMatchObject({ timeout: 30_000 }); } finally { db.close(); } diff --git a/tests/vector-generation-swap-semantics.test.ts b/tests/vector-generation-swap-semantics.test.ts new file mode 100644 index 00000000..6b378981 --- /dev/null +++ b/tests/vector-generation-swap-semantics.test.ts @@ -0,0 +1,222 @@ +/** + * What the swap must carry, and what it must not. + * + * `swapVectorGeneration` used to be `DROP live; CREATE live; INSERT … SELECT + * FROM staging`, which makes the new live index EXACTLY the staging table. Two + * populations exist only in the live index, and that shape discarded both + * silently: + * + * 1. Rows a concurrent writer added while the rebuild ran. Every writer + * except the rebuild loop targets the live table, and the loop works from + * an entity list snapshotted before it started — so a memory captured + * mid-rebuild lost its vector, and one whose text was EDITED mid-rebuild + * had its fresh vector replaced by the staged pre-edit one, which + * `countMissingVectors` cannot see because the row is present. + * 2. Conversely, a row staged for an entity since archived or forgotten. + * `archiveEntity`/`deleteEntity` delete from the live table only, and the + * loop lists `status='active'` so it never revisits the entity — the swap + * resurrected a memory the user had deleted. + * + * The third test pins the flag ownership. `swapVectorGeneration` used to delete + * `pending_reindex` itself, which pre-empted the decision `reindex()` makes + * afterwards from the finished index — so on a width change the marker was set + * at open, deleted by the swap, and `memesh doctor` (whose only vector check + * reads that row) went quiet over a graph still owed vectors. + * + * Every assertion here is on DATA — row presence and the vector bytes — not on + * a table name. A table name returning proves nothing about the vectors. + */ +import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import { + openDatabase, + closeDatabase, + getDatabase, + beginVectorGeneration, + swapVectorGeneration, + generationRowIds, + getPendingReindexInfo, + markReindexOwed, +} from '../src/db.js'; + +const DIM = 768; + +/** A vector whose first float is `tag`, so provenance is checkable per row. */ +function vec(tag: number): Buffer { + const b = Buffer.alloc(DIM * 4); + b.writeFloatLE(tag, 0); + return b; +} + +describe('Feature: the swap carries the live index forward, and prunes what is gone', () => { + let dir: string; + let dbPath: string; + let savedMemeshDir: string | undefined; + let stderrSpy: ReturnType; + + beforeEach(() => { + dir = fs.mkdtempSync(path.join(os.tmpdir(), 'memesh-swap-sem-')); + dbPath = path.join(dir, 'test.db'); + savedMemeshDir = process.env.MEMESH_DIR; + process.env.MEMESH_DIR = dir; + fs.writeFileSync( + path.join(dir, 'config.json'), + JSON.stringify({ embedder: { provider: 'ollama' } }), + ); + stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true); + openDatabase(dbPath); + }); + + afterEach(() => { + closeDatabase(); + stderrSpy.mockRestore(); + if (savedMemeshDir === undefined) delete process.env.MEMESH_DIR; + else process.env.MEMESH_DIR = savedMemeshDir; + fs.rmSync(dir, { recursive: true, force: true }); + }); + + /** Seed an active entity and return its id. */ + function seed(name: string): number { + const db = getDatabase(); + db.prepare("INSERT INTO entities (name, type) VALUES (?, 'note')").run(name); + const row = db.prepare('SELECT id FROM entities WHERE name = ?').get(name) as { id: number }; + db.prepare('INSERT INTO observations (entity_id, content) VALUES (?, ?)').run(row.id, 'a memory'); + return Number(row.id); + } + + function putLive(id: number, tag: number): void { + const db = getDatabase(); + db.prepare('DELETE FROM entities_vec WHERE rowid = ?').run(BigInt(id)); + db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)').run(BigInt(id), vec(tag)); + } + + function putStaged(id: number, tag: number): void { + getDatabase() + .prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(BigInt(id), vec(tag)); + } + + function liveTag(id: number): number | null { + const row = getDatabase() + .prepare('SELECT embedding FROM entities_vec WHERE rowid = ?') + .get(BigInt(id)) as { embedding: Uint8Array } | undefined; + return row ? Buffer.from(row.embedding).readFloatLE(0) : null; + } + + function liveCount(): number { + return (getDatabase().prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c; + } + + it('keeps a vector a concurrent writer put in the live index during the build', () => { + const staged = seed('was-in-the-snapshot'); + const concurrent = seed('remembered-mid-rebuild'); + + // The rebuild stages only what its snapshot contained. + beginVectorGeneration(DIM, 'ollama'); + putStaged(staged, 11); + // A hook / remember() writes the live table while the rebuild runs. No + // `target`, so it lands in `entities_vec`, not in the generation. + putLive(concurrent, 22); + + // Anti-vacuity: prove the fixture is real before asserting on the result. + // Without this a setup that staged nothing would satisfy the assertions + // below for the wrong reason. + expect(generationRowIds().has(staged), 'fixture: the staged row exists').toBe(true); + expect(generationRowIds().has(concurrent), 'fixture: the live-only row is NOT staged').toBe(false); + + swapVectorGeneration(DIM); + + expect(liveTag(staged), 'the staged vector was not promoted').toBe(11); + expect( + liveTag(concurrent), + 'the swap discarded a vector written while the rebuild ran', + ).toBe(22); + expect(liveCount()).toBe(2); + }); + + it('does not resurrect a staged vector for an entity that is no longer active', () => { + const kept = seed('still-here'); + const forgotten = seed('forgotten-mid-rebuild'); + + beginVectorGeneration(DIM, 'ollama'); + putStaged(kept, 11); + putStaged(forgotten, 99); + + // `forget` archives the entity and clears the LIVE row; it does not know a + // staging table exists. + getDatabase().prepare("UPDATE entities SET status = 'archived' WHERE id = ?").run(forgotten); + getDatabase().prepare('DELETE FROM entities_vec WHERE rowid = ?').run(BigInt(forgotten)); + + // Anti-vacuity: the staged row for the archived entity really is there, so + // "it is gone afterwards" cannot pass by never having existed. + expect(generationRowIds().has(forgotten), 'fixture: the orphan row is staged').toBe(true); + + swapVectorGeneration(DIM); + + expect(liveTag(kept)).toBe(11); + expect( + liveTag(forgotten), + "a forgotten memory's vector came back through the swap", + ).toBeNull(); + expect(liveCount()).toBe(1); + }); + + it('leaves pending_reindex alone — the swap is not its owner', () => { + const id = seed('alpha'); + beginVectorGeneration(DIM, 'ollama'); + putStaged(id, 11); + + // A width change recorded that a rebuild is owed. Only a measurement of the + // FINISHED index may retire that, and the swap is not that measurement. + markReindexOwed(1536, DIM, 'dimension-change'); + expect(getPendingReindexInfo()).not.toBeNull(); + + swapVectorGeneration(DIM); + + expect( + getPendingReindexInfo(), + 'the swap deleted the reindex-owed marker before anything measured the result', + ).not.toBeNull(); + }); + + it('does not carry live rows across when the width changed — they are not comparable', () => { + const id = seed('alpha'); + const other = seed('beta'); + // Live index is at DIM and stamped as such by openDatabase. + putLive(other, 77); + + // A generation at a DIFFERENT width. `beta` has no staged row, and its + // 768-dim live vector must not be copied into a 1536-dim index. + beginVectorGeneration(1536, 'ollama'); + getDatabase() + .prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(BigInt(id), Buffer.alloc(1536 * 4)); + + swapVectorGeneration(1536); + + const row = getDatabase() + .prepare('SELECT embedding FROM entities_vec WHERE rowid = ?') + .get(BigInt(id)) as { embedding: Uint8Array } | undefined; + expect(row, 'the staged row was not promoted').toBeDefined(); + expect(row!.embedding.length / 4, 'the new index is not at the new width').toBe(1536); + expect( + liveCount(), + 'a vector of the old width was carried into an index of the new width', + ).toBe(1); + expect(generationRowIds().size, 'the staging table survived the swap').toBe(0); + }); + + it('refuses a width that is not a positive integer instead of interpolating it into DDL', () => { + expect(() => swapVectorGeneration('768); DROP TABLE entities--' as unknown as number)).toThrow( + /Refusing to build a vector index at width/, + ); + expect(() => beginVectorGeneration(0, 'ollama')).toThrow(/Refusing/); + // The point of the guard: the schema is still there. + const n = (getDatabase() + .prepare("SELECT count(*) AS c FROM sqlite_master WHERE type='table' AND name='entities'") + .get() as { c: number }).c; + expect(n, 'the guard let a crafted width reach the DDL').toBe(1); + }); +}); diff --git a/tests/vector-index-safety.test.ts b/tests/vector-index-safety.test.ts index 6a6320df..fbaaad82 100644 --- a/tests/vector-index-safety.test.ts +++ b/tests/vector-index-safety.test.ts @@ -1,8 +1,11 @@ /** * The vector index must survive a config the process cannot read. * - * `ensureVecTable()` drops and recreates `entities_vec` whenever the configured - * embedding dimension differs from the stored one. The dimension comes from + * `ensureVecTable()` no longer drops anything at all — that is the point of the + * generation mechanism, and the second half of this file pins it. What it used + * to do, and what the first test still guards, is drop and recreate + * `entities_vec` whenever the configured embedding dimension differed from the + * stored one. The dimension comes from * `~/.memesh/config.json`, and `readConfig()` used to return `{}` for BOTH "the * user configured nothing" and "the file could not be read" — so a config that * was truncated mid-write, or briefly unreadable, resolved to the 384-dim @@ -25,8 +28,15 @@ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; import fs from 'fs'; import os from 'os'; import path from 'path'; -import { openDatabase, closeDatabase, allowVectorIndexRebuild } from '../src/db.js'; -import { isEmbeddingAvailable, canRefillVectorIndex } from '../src/core/embedder.js'; +import { + openDatabase, + closeDatabase, + beginVectorGeneration, + swapVectorGeneration, + discardVectorGeneration, + getVectorGenerationInfo, + generationRowIds, +} from '../src/db.js'; describe('Feature: an unreadable config does not delete embeddings', () => { let dir: string; @@ -112,225 +122,144 @@ describe('Feature: an unreadable config does not delete embeddings', () => { expect(written.join('')).toContain('left untouched'); }); - /** Open at 1536 with one real vector stored, then close. */ - function seedByokIndex(): number { + + it('a dimension change keeps every vector — the open path has no destructive branch left', () => { + // This used to require consent, and the consent existed because the open + // path dropped the index. Generations removed the drop, so the answer is + // now unconditional: a readable, deliberate dimension change deletes + // nothing, records that a rebuild is owed, and leaves the index answering + // queries at its old width until a complete new one is ready. fs.writeFileSync(configPath, BYOK_CONFIG); const db = openDatabase(dbPath); expect(storedDimension()).toBe(1536); - db.prepare("INSERT INTO entities (name, type) VALUES ('embedded-note', 'note')").run(); - const id = ( - db.prepare("SELECT id FROM entities WHERE name = 'embedded-note'").get() as { id: number } - ).id; - db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)').run( - BigInt(id), - Buffer.from(new Float32Array(1536).fill(0.5).buffer) - ); + db.prepare("INSERT INTO entities (name, type) VALUES ('kept', 'note')").run(); + db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(1536 * 4)); closeDatabase(); - return id; - } - - it('a READABLE dimension change is refused too, until the user asks for it', () => { - // The guard used to be gated on the config being ABSENT, on the argument - // that an absent config is weak evidence for destroying data. It is — but - // so is a present one. `configDir()` follows MEMESH_DIR/HOME while - // `getDbPath()` follows MEMESH_DB_PATH, so a process under a foreign HOME - // that HAPPENS to contain a config file (a container image's default - // config.json, a second machine profile, an unrelated edit that dropped - // the embedder key) was treated as authoritative for a database it had - // never seen — and took the DROP branch on exactly the evidence the guard - // exists to distrust. - // - // So the refusal follows the consequence instead of the evidence: keeping - // a stale index is recoverable by fixing the config, dropping one is not. - seedByokIndex(); + // Switch to ollama: 768 dim, readable config, unambiguous intent. fs.writeFileSync(configPath, JSON.stringify({ embedder: { provider: 'ollama' } })); - written.length = 0; + const reopened = openDatabase(dbPath); - // The 1536-dim index is still there, still 1536, still holding its vector. - expect(storedDimension()).toBe(1536); - const after = openDatabase(dbPath); - expect( - (after.prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c - ).toBe(1); - expect( - after.prepare("SELECT value FROM memesh_metadata WHERE key = 'pending_reindex'").get() - ).toBeUndefined(); - - // And the message has to name a command that can actually finish the job. - // It used to say `memesh reindex`, which cannot change the table's - // dimension — so following the instruction landed the user right back at - // this same refusal, for as many times as they were willing to try. - expect(written.join('')).toContain('memesh reindex --vectors'); + const rows = (reopened.prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c; + expect(rows, 'a dimension change deleted stored vectors').toBe(1); + expect(storedDimension(), 'the stamp moved before a new index existed').toBe(1536); + expect(written.join(''), 'the user was not told a rebuild is owed').toContain('reindex'); }); - it('rebuilds when the rebuild is explicitly consented to', async () => { - // The guard must not become "never migrate". `memesh reindex --vectors` - // grants consent before opening the database, which is the only moment - // early enough — the drop happens inside `openDatabase`. - seedByokIndex(); - - fs.writeFileSync(configPath, JSON.stringify({ embedder: { provider: 'ollama' } })); - written.length = 0; - - await allowVectorIndexRebuild(dbPath, async () => true); - const after = openDatabase(dbPath); - - expect(storedDimension()).toBe(768); - expect( - (after.prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c - ).toBe(0); - expect(written.join('')).toContain('Embedding dimension changed'); - // The drop is recorded so `memesh doctor` can still see it after the - // process that did it has exited. - expect( - after.prepare("SELECT value FROM memesh_metadata WHERE key = 'pending_reindex'").get() - ).toBeDefined(); - }); - - it('consent is spent by the open that uses it', async () => { - // A long-lived process — the HTTP server — opens the database more than - // once. Consent given for one deliberate rebuild must not authorise a - // second one later in the same process, when nobody asked. - seedByokIndex(); - - fs.writeFileSync(configPath, JSON.stringify({ embedder: { provider: 'ollama' } })); - await allowVectorIndexRebuild(dbPath, async () => true); - openDatabase(dbPath); - expect(storedDimension()).toBe(768); - closeDatabase(); - - // Config switched again. No new consent. + it('a generation is built beside the live index, not in place', () => { fs.writeFileSync(configPath, BYOK_CONFIG); - written.length = 0; - - expect(storedDimension()).toBe(768); - expect(written.join('')).toContain('memesh reindex --vectors'); + const db = openDatabase(dbPath); + db.prepare("INSERT INTO entities (name, type) VALUES ('live', 'note')").run(); + db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(1536 * 4)); + + beginVectorGeneration(768, 'ollama'); + db.prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(768 * 4)); + + // Both alive at once, at different widths — the property the whole design + // rests on, and one that was measured against sqlite-vec before it was + // designed on. + expect((db.prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c).toBe(1); + expect(generationRowIds().has(1)).toBe(true); + expect(getVectorGenerationInfo()).toMatchObject({ dimension: 768, provider: 'ollama' }); }); - it('refuses to record consent when nothing could refill the index', async () => { - // The command offered as the safe way through a dimension change must not - // become the cause of the loss it exists to prevent. Dropping the table - // with no embedding provider available destroys every vector AND leaves - // nothing able to regenerate them — strictly worse than the refusal. - // - // `allowVectorIndexRebuild` takes the check as an argument for this - // reason: as two adjacent statements in the CLI the ordering would hold - // only until someone moved one of them, and this is not a mistake that - // shows up in testing — it shows up in somebody's database. - seedByokIndex(); - - fs.writeFileSync(configPath, JSON.stringify({ embedder: { provider: 'ollama' } })); - written.length = 0; - - expect(await allowVectorIndexRebuild(dbPath, async () => false)).toBe(false); - - // Consent was not recorded, so the open that follows still refuses. - expect(storedDimension()).toBe(1536); - expect( - (openDatabase(dbPath).prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c - ).toBe(1); - expect(written.join('')).toContain('memesh reindex --vectors'); + it('a discarded generation leaves the live index untouched', () => { + fs.writeFileSync(configPath, BYOK_CONFIG); + const db = openDatabase(dbPath); + db.prepare("INSERT INTO entities (name, type) VALUES ('live', 'note')").run(); + db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(1536 * 4)); + beginVectorGeneration(768, 'ollama'); + db.prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(768 * 4)); + + discardVectorGeneration(); + + expect((db.prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c).toBe(1); + expect(getVectorGenerationInfo()).toBeNull(); + expect(generationRowIds().size).toBe(0); }); - it('a configured provider that cannot actually embed does not authorise the drop', async () => { - // The precondition has to be a proof, not a claim. - // - // `isEmbeddingAvailable()` answers "which provider does the config name", - // and for openai and ollama it answers yes without checking a key, - // reaching an endpoint, or comparing a dimension. Passing THAT as the - // consent precondition means an expired key, a typo'd key, or a stopped - // Ollama all authorise dropping every embedding in the database — and then - // nothing can write one back. The refusal exists to prevent exactly that - // loss, and the claim-based check hands it to the user through the command - // documented as the safe way through. - fs.writeFileSync(configPath, BYOK_CONFIG); // openai, 1536-dim - - // No OPENAI_API_KEY, and the network is refused outright. The claim still - // says yes. - const savedKey = process.env.OPENAI_API_KEY; - delete process.env.OPENAI_API_KEY; - const fetchSpy = vi - .spyOn(globalThis, 'fetch') - .mockRejectedValue(new Error('getaddrinfo ENOTFOUND api.openai.com')); - try { - expect(isEmbeddingAvailable(), 'setup: the claim-based check should say yes').toBe(true); - - // The proof says no, so the grant is refused... - expect(await canRefillVectorIndex()).toBe(false); - expect(await allowVectorIndexRebuild(dbPath, canRefillVectorIndex)).toBe(false); - } finally { - fetchSpy.mockRestore(); - if (savedKey === undefined) delete process.env.OPENAI_API_KEY; - else process.env.OPENAI_API_KEY = savedKey; - } - - // ...and the index the config would have rebuilt is still there, vector - // and all. Reading the end state, not the return value: the return value - // being wrong is the whole reason this test exists. - seedByokIndex(); - fs.writeFileSync(configPath, JSON.stringify({ embedder: { provider: 'ollama' } })); - written.length = 0; - expect(storedDimension()).toBe(1536); - expect( - (openDatabase(dbPath).prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c - ).toBe(1); + it('an incompatible half-built generation is discarded rather than continued', () => { + // Resuming across a provider or width change would mix vectors from two + // different spaces into one index — the drift the mechanism exists to stop. + fs.writeFileSync(configPath, BYOK_CONFIG); + const db = openDatabase(dbPath); + beginVectorGeneration(768, 'ollama'); + db.prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(768 * 4)); + expect(generationRowIds().size).toBe(1); + + const again = beginVectorGeneration(1536, 'openai'); + expect(again.resumed, 'a 768-dim ollama generation was resumed as 1536-dim openai').toBe(false); + expect(generationRowIds().size, 'incompatible staged vectors survived').toBe(0); + expect(getVectorGenerationInfo()).toMatchObject({ dimension: 1536, provider: 'openai' }); }); - it('consent granted for one database does not authorise dropping another', async () => { - // The consent used to be a bare module-level boolean. In any process that - // opens more than one database — the HTTP server, a library embedding - // this — a grant recorded for A could be spent by an `openDatabase(B)` - // that ran first, and B's vectors, never consented to and never asked - // about, would be the ones dropped. Authorisation as wide as the process - // for an action as narrow as one file. - const otherPath = path.join(dir, 'other.db'); - - // B is a real BYOK database with a real vector in it. + it('a compatible half-built generation IS resumed, so paid embeddings are not re-bought', () => { fs.writeFileSync(configPath, BYOK_CONFIG); - const other = openDatabase(otherPath); - other.prepare("INSERT INTO entities (name, type) VALUES ('other-note', 'note')").run(); - const id = ( - other.prepare("SELECT id FROM entities WHERE name = 'other-note'").get() as { id: number } - ).id; - other.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)').run( - BigInt(id), - Buffer.from(new Float32Array(1536).fill(0.5).buffer) - ); - closeDatabase(); - - // Consent is granted for A. Nobody said anything about B. - fs.writeFileSync(configPath, JSON.stringify({ embedder: { provider: 'ollama' } })); - expect(await allowVectorIndexRebuild(dbPath, async () => true)).toBe(true); - written.length = 0; - - // B opens first. - const reopened = openDatabase(otherPath); + openDatabase(dbPath); + beginVectorGeneration(1536, 'openai'); + openDatabase(dbPath).prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(1536 * 4)); - expect( - (reopened.prepare("SELECT value FROM memesh_metadata WHERE key = 'embedding_dimension'").get() as { value: string }).value - ).toBe('1536'); - expect( - (reopened.prepare('SELECT count(*) AS c FROM entities_vec').get() as { c: number }).c, - "another database's vectors were dropped on A's consent" - ).toBe(1); - expect(written.join('')).toContain('memesh reindex --vectors'); + const again = beginVectorGeneration(1536, 'openai'); + expect(again.resumed).toBe(true); + expect(generationRowIds().has(1), 'a resume threw away an embedding already paid for').toBe(true); }); - it('consent left unused does not leak into an unrelated later open', async () => { - // Granting consent and then not needing it (the dimensions matched after - // all) must not leave the flag armed for the next open, which could be a - // different database entirely. + it('a swap that fails mid-transaction leaves the previous index intact', () => { + // The crash-injection test this path never had. `swapVectorGeneration` + // drops the live table, recreates it at the new width and copies the + // staged rows — all inside one transaction, precisely so a failure part + // way cannot publish a half-built index. A trigger that refuses the + // metadata write forces the failure at the last step, after the drop and + // the copy have already happened, which is the worst moment for it. fs.writeFileSync(configPath, BYOK_CONFIG); - await allowVectorIndexRebuild(dbPath, async () => true); - openDatabase(dbPath); // dimensions agree — consent is not consumed here + const db = openDatabase(dbPath); + db.prepare("INSERT INTO entities (name, type) VALUES ('live', 'note')").run(); + db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(1536 * 4)); + beginVectorGeneration(768, 'ollama'); + db.prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(768 * 4)); + + db.exec(` + CREATE TRIGGER refuse_dim_stamp BEFORE INSERT ON memesh_metadata + WHEN NEW.key = 'embedding_dimension' + BEGIN SELECT RAISE(ABORT, 'injected swap failure'); END; + `); + expect(() => swapVectorGeneration(768)).toThrow(/injected swap failure/); + db.exec('DROP TRIGGER refuse_dim_stamp'); + + // The live index is still the OLD one: same row, same width, and the + // dimension stamp never moved. Checked on the DATA, not on the table + // name — a recreated empty table is also a table that exists. + const row = db.prepare('SELECT embedding FROM entities_vec WHERE rowid = 1').get() as { embedding: Uint8Array }; + expect(row.embedding.length / 4, 'the swap published a half-built index').toBe(1536); expect(storedDimension()).toBe(1536); - closeDatabase(); + expect(generationRowIds().has(1), 'the staged work was lost to a failed swap').toBe(true); + }); - fs.writeFileSync(configPath, JSON.stringify({ embedder: { provider: 'ollama' } })); - written.length = 0; + it('a completed swap promotes the generation and clears its marker', () => { + fs.writeFileSync(configPath, BYOK_CONFIG); + const db = openDatabase(dbPath); + db.prepare("INSERT INTO entities (name, type) VALUES ('live', 'note')").run(); + db.prepare('INSERT INTO entities_vec (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(1536 * 4)); + beginVectorGeneration(768, 'ollama'); + db.prepare('INSERT INTO entities_vec_next (rowid, embedding) VALUES (?, ?)') + .run(1n, Buffer.alloc(768 * 4)); - expect(storedDimension()).toBe(1536); - expect(written.join('')).toContain('memesh reindex --vectors'); + swapVectorGeneration(768); + + const row = db.prepare('SELECT embedding FROM entities_vec WHERE rowid = 1').get() as { embedding: Uint8Array }; + expect(row.embedding.length / 4, 'the new generation was not switched in').toBe(768); + expect(storedDimension()).toBe(768); + expect(getVectorGenerationInfo(), 'the generation marker outlived its generation').toBeNull(); + expect(generationRowIds().size, 'the staging table survived the swap').toBe(0); }); });