latticesql 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,6 +24,37 @@ Every AI agent session starts cold — no memory of what happened yesterday, wha
24
24
 
25
25
  Lattice has no opinions about your schema, your agents, or your file format. You define the tables. You control the rendering. Lattice runs the sync loop.
26
26
 
27
+ **New in 4.2 (additive — every 4.1 caller runs unchanged):** **import structured
28
+ data by dropping a file into the assistant.** The **structured-source importer**
29
+ turns a JSON or `.xlsx` source into a schema (entities / dimensions / junctions)
30
+ and materializes it: Excel sheets become records (header + data-region detection),
31
+ per-slice tabs become read-only **views** (no duplicated rows), an **as-of date**
32
+ is detected (contents → name → Excel preamble → Claude fallback, or per-row from a
33
+ date column) so re-importing a newer period keeps a **point-in-time snapshot**
34
+ beside the prior one, and a re-upload is fingerprinted + matched to existing tables
35
+ (new snapshot, not duplicate tables). It's reachable only by dropping a file in the
36
+ assistant rail: a confident match + detected date imports silently; otherwise an
37
+ **inline confirm card** proposes the schema, date, and mode before anything is
38
+ written (applied via `POST /api/import/apply`). New exports: `inferSchema`,
39
+ `inferFieldType`, `normalizeName`, `sourceRecords`, `materializeImport`,
40
+ `detectAsOf`, `detectAsOfCandidates`, `detectAsOfColumns`, `parseCellDate`,
41
+ `matchSchemaToExisting`, `renameEntities`, `excelToRecords`,
42
+ `dedupeAndDetectViews` (+ types). See **[docs/importing.md](docs/importing.md)**.
43
+ 4.2 also tightens correctness and the read/egress posture: **retrieval bounding**
44
+ (`/api/history` clamps its `limit`; semantic search clamps `topK` before the
45
+ candidate fan-out; the no-index embedding scan takes an opt-in `maxScanChunks`
46
+ that fails loudly with `EmbeddingScanTooLargeError` rather than silently truncate
47
+ — off by default), an **import file-size cap enforced on BOTH the upload and the
48
+ apply-time read** (50 MB), a **genuinely failable retrieval-quality gate**
49
+ (cross-topic golden corpus + a generated sub-perfect committed baseline +
50
+ `npm run eval:gate` in CI; the benchmark now asserts a real pgvector index before
51
+ timing the vector phase; an advisory `npm run slo:gate`), **per-recipient scoping
52
+ of realtime delete events** (a deleted row's pk/existence is no longer fanned out
53
+ to members who couldn't read it), **symmetric many-to-many junction rendering**
54
+ (both sides show the remote entity), and a **Windows credential-store fix** (the
55
+ cross-process lock now retries transient `EPERM`/`EACCES`). All opt-in; absent the
56
+ opt-in, behavior is byte-identical to 4.1.
57
+
27
58
  **New in 4.1 (additive — every 4.0 caller runs unchanged):** a measurable,
28
59
  production-grade **retrieval & data substrate**. Retrieval gets _measurable_:
29
60
  `evaluateRetrieval` reports the standard IR metrics (Precision@k / Recall@k / MRR /