sensemaking 0.17.1 → 0.18.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 +15 -13
- package/dist/cjs/cli/map.js +144 -3
- package/dist/cjs/cli/map.js.map +1 -1
- package/dist/cjs/cli/named.js +19 -11
- package/dist/cjs/cli/named.js.map +1 -1
- package/dist/cjs/cli/path.js +186 -26
- package/dist/cjs/cli/path.js.map +1 -1
- package/dist/cjs/cli/peek.js +145 -4
- package/dist/cjs/cli/peek.js.map +1 -1
- package/dist/cjs/cli/related.js +2 -2
- package/dist/cjs/cli/related.js.map +1 -1
- package/dist/cjs/cli/search.js +2 -2
- package/dist/cjs/cli/search.js.map +1 -1
- package/dist/cjs/cli/shared.d.cts +3 -3
- package/dist/cjs/cli/shared.d.ts +3 -3
- package/dist/cjs/cli/shared.js +156 -58
- package/dist/cjs/cli/shared.js.map +1 -1
- package/dist/cjs/cli/sql.js +151 -10
- package/dist/cjs/cli/sql.js.map +1 -1
- package/dist/cjs/cli/status.js +177 -52
- package/dist/cjs/cli/status.js.map +1 -1
- package/dist/cjs/commands/map.d.cts +2 -2
- package/dist/cjs/commands/map.d.ts +2 -2
- package/dist/cjs/commands/map.js +373 -67
- package/dist/cjs/commands/map.js.map +1 -1
- package/dist/cjs/commands/peek.d.cts +2 -2
- package/dist/cjs/commands/peek.d.ts +2 -2
- package/dist/cjs/commands/peek.js +321 -79
- package/dist/cjs/commands/peek.js.map +1 -1
- package/dist/cjs/commands/related.d.cts +2 -2
- package/dist/cjs/commands/related.d.ts +2 -2
- package/dist/cjs/commands/related.js +55 -10
- package/dist/cjs/commands/related.js.map +1 -1
- package/dist/cjs/commands/scope.d.cts +7 -7
- package/dist/cjs/commands/scope.d.ts +7 -7
- package/dist/cjs/commands/scope.js +382 -45
- package/dist/cjs/commands/scope.js.map +1 -1
- package/dist/cjs/commands/search.d.cts +2 -2
- package/dist/cjs/commands/search.d.ts +2 -2
- package/dist/cjs/commands/search.js +292 -99
- package/dist/cjs/commands/search.js.map +1 -1
- package/dist/cjs/commands/signals.d.cts +4 -10
- package/dist/cjs/commands/signals.d.ts +4 -10
- package/dist/cjs/commands/signals.js +91 -45
- package/dist/cjs/commands/signals.js.map +1 -1
- package/dist/cjs/commands/status.d.cts +2 -2
- package/dist/cjs/commands/status.d.ts +2 -2
- package/dist/cjs/commands/status.js +247 -10
- package/dist/cjs/commands/status.js.map +1 -1
- package/dist/cjs/config/access.d.cts +1 -0
- package/dist/cjs/config/access.d.ts +1 -0
- package/dist/cjs/config/access.js +7 -0
- package/dist/cjs/config/access.js.map +1 -1
- package/dist/cjs/config/index.d.cts +1 -1
- package/dist/cjs/config/index.d.ts +1 -1
- package/dist/cjs/config/index.js +3 -0
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/config/types.d.cts +1 -0
- package/dist/cjs/config/types.d.ts +1 -0
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/config/validate.js +10 -1
- package/dist/cjs/config/validate.js.map +1 -1
- package/dist/cjs/embed/distribution.d.cts +3 -3
- package/dist/cjs/embed/distribution.d.ts +3 -3
- package/dist/cjs/embed/distribution.js +162 -6
- package/dist/cjs/embed/distribution.js.map +1 -1
- package/dist/cjs/embed/langfit.d.cts +2 -2
- package/dist/cjs/embed/langfit.d.ts +2 -2
- package/dist/cjs/embed/langfit.js +57 -44
- package/dist/cjs/embed/langfit.js.map +1 -1
- package/dist/cjs/embed/query.d.cts +6 -13
- package/dist/cjs/embed/query.d.ts +6 -13
- package/dist/cjs/embed/query.js +56 -168
- package/dist/cjs/embed/query.js.map +1 -1
- package/dist/cjs/embed/types.d.cts +1 -0
- package/dist/cjs/embed/types.d.ts +1 -0
- package/dist/cjs/embed/types.js +11 -2
- package/dist/cjs/embed/types.js.map +1 -1
- package/dist/cjs/errors.d.cts +1 -1
- package/dist/cjs/errors.d.ts +1 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/features/embed.js +218 -11
- package/dist/cjs/features/embed.js.map +1 -1
- package/dist/cjs/features/index.d.cts +1 -1
- package/dist/cjs/features/index.d.ts +1 -1
- package/dist/cjs/features/index.js +6 -0
- package/dist/cjs/features/index.js.map +1 -1
- package/dist/cjs/features/links.d.cts +7 -2
- package/dist/cjs/features/links.d.ts +7 -2
- package/dist/cjs/features/links.js +710 -198
- package/dist/cjs/features/links.js.map +1 -1
- package/dist/cjs/features/rank.js +231 -31
- package/dist/cjs/features/rank.js.map +1 -1
- package/dist/cjs/features/sections.js +218 -8
- package/dist/cjs/features/sections.js.map +1 -1
- package/dist/cjs/features/tags.js +236 -40
- package/dist/cjs/features/tags.js.map +1 -1
- package/dist/cjs/features/types.d.cts +9 -5
- package/dist/cjs/features/types.d.ts +9 -5
- package/dist/cjs/graph/traverse.d.cts +2 -2
- package/dist/cjs/graph/traverse.d.ts +2 -2
- package/dist/cjs/graph/traverse.js +321 -42
- package/dist/cjs/graph/traverse.js.map +1 -1
- package/dist/cjs/index.d.cts +3 -2
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/guarded-tick.d.cts +1 -0
- package/dist/cjs/lib/guarded-tick.d.ts +1 -0
- package/dist/cjs/lib/guarded-tick.js +19 -0
- package/dist/cjs/lib/guarded-tick.js.map +1 -0
- package/dist/cjs/output/column-hint.d.cts +1 -2
- package/dist/cjs/output/column-hint.d.ts +1 -2
- package/dist/cjs/output/column-hint.js +1 -4
- package/dist/cjs/output/column-hint.js.map +1 -1
- package/dist/cjs/output/output.d.cts +2 -1
- package/dist/cjs/output/output.d.ts +2 -1
- package/dist/cjs/output/output.js +515 -97
- package/dist/cjs/output/output.js.map +1 -1
- package/dist/cjs/scan/frontmatter.js.map +1 -1
- package/dist/cjs/scan/index.js.map +1 -1
- package/dist/cjs/scan/reparse.d.cts +10 -0
- package/dist/cjs/scan/reparse.d.ts +10 -0
- package/dist/cjs/scan/reparse.js +104 -0
- package/dist/cjs/scan/reparse.js.map +1 -0
- package/dist/cjs/store/duckdb/batch.d.cts +16 -0
- package/dist/cjs/store/duckdb/batch.d.ts +16 -0
- package/dist/cjs/store/duckdb/batch.js +208 -0
- package/dist/cjs/store/duckdb/batch.js.map +1 -0
- package/dist/cjs/store/duckdb/connection.d.cts +5 -0
- package/dist/cjs/store/duckdb/connection.d.ts +5 -0
- package/dist/cjs/store/duckdb/connection.js +772 -0
- package/dist/cjs/store/duckdb/connection.js.map +1 -0
- package/dist/cjs/store/duckdb/lexical.d.cts +10 -0
- package/dist/cjs/store/duckdb/lexical.d.ts +10 -0
- package/dist/cjs/store/duckdb/lexical.js +502 -0
- package/dist/cjs/store/duckdb/lexical.js.map +1 -0
- package/dist/cjs/store/duckdb/native.d.cts +3 -0
- package/dist/cjs/store/duckdb/native.d.ts +3 -0
- package/dist/cjs/store/duckdb/native.js +360 -0
- package/dist/cjs/store/duckdb/native.js.map +1 -0
- package/dist/cjs/store/duckdb/open.d.cts +12 -0
- package/dist/cjs/store/duckdb/open.d.ts +12 -0
- package/dist/cjs/store/duckdb/open.js +501 -0
- package/dist/cjs/store/duckdb/open.js.map +1 -0
- package/dist/cjs/store/duckdb/reconcile.d.cts +6 -0
- package/dist/cjs/store/duckdb/reconcile.d.ts +6 -0
- package/dist/cjs/store/duckdb/reconcile.js +753 -0
- package/dist/cjs/store/duckdb/reconcile.js.map +1 -0
- package/dist/cjs/store/duckdb/sql-functions.d.cts +2 -0
- package/dist/cjs/store/duckdb/sql-functions.d.ts +2 -0
- package/dist/cjs/store/duckdb/sql-functions.js +203 -0
- package/dist/cjs/store/duckdb/sql-functions.js.map +1 -0
- package/dist/cjs/store/duckdb/store.d.cts +5 -0
- package/dist/cjs/store/duckdb/store.d.ts +5 -0
- package/dist/cjs/store/duckdb/store.js +504 -0
- package/dist/cjs/store/duckdb/store.js.map +1 -0
- package/dist/cjs/store/duckdb/vectors.d.cts +9 -0
- package/dist/cjs/store/duckdb/vectors.d.ts +9 -0
- package/dist/cjs/store/duckdb/vectors.js +502 -0
- package/dist/cjs/store/duckdb/vectors.js.map +1 -0
- package/dist/cjs/store/index.d.cts +7 -0
- package/dist/cjs/store/index.d.ts +7 -0
- package/dist/cjs/store/index.js +201 -0
- package/dist/cjs/store/index.js.map +1 -0
- package/dist/cjs/store/meta.d.cts +3 -0
- package/dist/cjs/store/meta.d.ts +3 -0
- package/dist/cjs/store/meta.js +215 -0
- package/dist/cjs/store/meta.js.map +1 -0
- package/dist/cjs/store/shared.d.cts +5 -0
- package/dist/cjs/store/shared.d.ts +5 -0
- package/dist/cjs/store/shared.js +252 -0
- package/dist/cjs/store/shared.js.map +1 -0
- package/dist/cjs/store/sql-functions.d.cts +2 -0
- package/dist/cjs/store/sql-functions.d.ts +2 -0
- package/dist/cjs/store/sql-functions.js +48 -0
- package/dist/cjs/store/sql-functions.js.map +1 -0
- package/dist/cjs/store/sqlite/connection.d.cts +3 -0
- package/dist/cjs/store/sqlite/connection.d.ts +3 -0
- package/dist/cjs/store/sqlite/connection.js +516 -0
- package/dist/cjs/store/sqlite/connection.js.map +1 -0
- package/dist/cjs/store/sqlite/lexical.d.cts +2 -0
- package/dist/cjs/store/sqlite/lexical.d.ts +2 -0
- package/dist/cjs/store/sqlite/lexical.js +177 -0
- package/dist/cjs/store/sqlite/lexical.js.map +1 -0
- package/dist/cjs/{db → store/sqlite}/open.d.cts +5 -5
- package/dist/cjs/{db → store/sqlite}/open.d.ts +5 -5
- package/dist/cjs/store/sqlite/open.js +604 -0
- package/dist/cjs/store/sqlite/open.js.map +1 -0
- package/dist/cjs/store/sqlite/reconcile.d.cts +10 -0
- package/dist/cjs/store/sqlite/reconcile.d.ts +10 -0
- package/dist/cjs/store/sqlite/reconcile.js +1020 -0
- package/dist/cjs/store/sqlite/reconcile.js.map +1 -0
- package/dist/cjs/store/sqlite/sql-functions.js +34 -0
- package/dist/cjs/store/sqlite/sql-functions.js.map +1 -0
- package/dist/cjs/store/sqlite/store.d.cts +5 -0
- package/dist/cjs/store/sqlite/store.d.ts +5 -0
- package/dist/cjs/store/sqlite/store.js +588 -0
- package/dist/cjs/store/sqlite/store.js.map +1 -0
- package/dist/cjs/store/sqlite/vectors.d.cts +13 -0
- package/dist/cjs/store/sqlite/vectors.d.ts +13 -0
- package/dist/cjs/store/sqlite/vectors.js +470 -0
- package/dist/cjs/store/sqlite/vectors.js.map +1 -0
- package/dist/cjs/store/transaction.d.cts +5 -0
- package/dist/cjs/store/transaction.d.ts +5 -0
- package/dist/cjs/store/transaction.js +297 -0
- package/dist/cjs/store/transaction.js.map +1 -0
- package/dist/cjs/store/types.d.cts +91 -0
- package/dist/cjs/store/types.d.ts +91 -0
- package/dist/cjs/store/types.js +15 -0
- package/dist/cjs/store/types.js.map +1 -0
- package/dist/cjs/watch.d.cts +3 -0
- package/dist/cjs/watch.d.ts +3 -0
- package/dist/cjs/watch.js +215 -73
- package/dist/cjs/watch.js.map +1 -1
- package/dist/esm/cli/map.js +4 -4
- package/dist/esm/cli/map.js.map +1 -1
- package/dist/esm/cli/named.js +2 -2
- package/dist/esm/cli/named.js.map +1 -1
- package/dist/esm/cli/path.js +4 -4
- package/dist/esm/cli/path.js.map +1 -1
- package/dist/esm/cli/peek.js +4 -4
- package/dist/esm/cli/peek.js.map +1 -1
- package/dist/esm/cli/related.js +2 -2
- package/dist/esm/cli/related.js.map +1 -1
- package/dist/esm/cli/search.js +1 -1
- package/dist/esm/cli/search.js.map +1 -1
- package/dist/esm/cli/shared.d.ts +3 -3
- package/dist/esm/cli/shared.js +17 -17
- package/dist/esm/cli/shared.js.map +1 -1
- package/dist/esm/cli/sql.js +2 -2
- package/dist/esm/cli/sql.js.map +1 -1
- package/dist/esm/cli/status.js +23 -22
- package/dist/esm/cli/status.js.map +1 -1
- package/dist/esm/commands/map.d.ts +2 -2
- package/dist/esm/commands/map.js +51 -41
- package/dist/esm/commands/map.js.map +1 -1
- package/dist/esm/commands/peek.d.ts +2 -2
- package/dist/esm/commands/peek.js +58 -50
- package/dist/esm/commands/peek.js.map +1 -1
- package/dist/esm/commands/related.d.ts +2 -2
- package/dist/esm/commands/related.js +9 -9
- package/dist/esm/commands/related.js.map +1 -1
- package/dist/esm/commands/scope.d.ts +7 -7
- package/dist/esm/commands/scope.js +28 -17
- package/dist/esm/commands/scope.js.map +1 -1
- package/dist/esm/commands/search.d.ts +2 -2
- package/dist/esm/commands/search.js +42 -35
- package/dist/esm/commands/search.js.map +1 -1
- package/dist/esm/commands/signals.d.ts +4 -10
- package/dist/esm/commands/signals.js +17 -13
- package/dist/esm/commands/signals.js.map +1 -1
- package/dist/esm/commands/status.d.ts +2 -2
- package/dist/esm/commands/status.js +13 -7
- package/dist/esm/commands/status.js.map +1 -1
- package/dist/esm/config/access.d.ts +1 -0
- package/dist/esm/config/access.js +5 -0
- package/dist/esm/config/access.js.map +1 -1
- package/dist/esm/config/index.d.ts +1 -1
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/types.d.ts +1 -0
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/config/validate.js +10 -1
- package/dist/esm/config/validate.js.map +1 -1
- package/dist/esm/embed/distribution.d.ts +3 -3
- package/dist/esm/embed/distribution.js +5 -5
- package/dist/esm/embed/distribution.js.map +1 -1
- package/dist/esm/embed/langfit.d.ts +2 -2
- package/dist/esm/embed/langfit.js +4 -4
- package/dist/esm/embed/langfit.js.map +1 -1
- package/dist/esm/embed/query.d.ts +6 -13
- package/dist/esm/embed/query.js +23 -84
- package/dist/esm/embed/query.js.map +1 -1
- package/dist/esm/embed/types.d.ts +1 -0
- package/dist/esm/embed/types.js +5 -3
- package/dist/esm/embed/types.js.map +1 -1
- package/dist/esm/errors.d.ts +1 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/features/embed.js +22 -10
- package/dist/esm/features/embed.js.map +1 -1
- package/dist/esm/features/index.d.ts +1 -1
- package/dist/esm/features/index.js +1 -1
- package/dist/esm/features/index.js.map +1 -1
- package/dist/esm/features/links.d.ts +7 -2
- package/dist/esm/features/links.js +124 -97
- package/dist/esm/features/links.js.map +1 -1
- package/dist/esm/features/rank.js +15 -8
- package/dist/esm/features/rank.js.map +1 -1
- package/dist/esm/features/sections.js +20 -7
- package/dist/esm/features/sections.js.map +1 -1
- package/dist/esm/features/tags.js +19 -18
- package/dist/esm/features/tags.js.map +1 -1
- package/dist/esm/features/types.d.ts +9 -5
- package/dist/esm/features/types.js +1 -1
- package/dist/esm/features/types.js.map +1 -1
- package/dist/esm/graph/traverse.d.ts +2 -2
- package/dist/esm/graph/traverse.js +26 -23
- package/dist/esm/graph/traverse.js.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/guarded-tick.d.ts +1 -0
- package/dist/esm/lib/guarded-tick.js +8 -0
- package/dist/esm/lib/guarded-tick.js.map +1 -0
- package/dist/esm/output/column-hint.d.ts +1 -2
- package/dist/esm/output/column-hint.js +3 -2
- package/dist/esm/output/column-hint.js.map +1 -1
- package/dist/esm/output/output.d.ts +2 -1
- package/dist/esm/output/output.js +27 -23
- package/dist/esm/output/output.js.map +1 -1
- package/dist/esm/scan/frontmatter.js +1 -1
- package/dist/esm/scan/frontmatter.js.map +1 -1
- package/dist/esm/scan/index.js +1 -1
- package/dist/esm/scan/index.js.map +1 -1
- package/dist/esm/scan/reparse.d.ts +10 -0
- package/dist/esm/scan/reparse.js +30 -0
- package/dist/esm/scan/reparse.js.map +1 -0
- package/dist/esm/store/duckdb/batch.d.ts +16 -0
- package/dist/esm/store/duckdb/batch.js +96 -0
- package/dist/esm/store/duckdb/batch.js.map +1 -0
- package/dist/esm/store/duckdb/connection.d.ts +5 -0
- package/dist/esm/store/duckdb/connection.js +97 -0
- package/dist/esm/store/duckdb/connection.js.map +1 -0
- package/dist/esm/store/duckdb/lexical.d.ts +10 -0
- package/dist/esm/store/duckdb/lexical.js +163 -0
- package/dist/esm/store/duckdb/lexical.js.map +1 -0
- package/dist/esm/store/duckdb/native.d.ts +3 -0
- package/dist/esm/store/duckdb/native.js +96 -0
- package/dist/esm/store/duckdb/native.js.map +1 -0
- package/dist/esm/store/duckdb/open.d.ts +12 -0
- package/dist/esm/store/duckdb/open.js +127 -0
- package/dist/esm/store/duckdb/open.js.map +1 -0
- package/dist/esm/store/duckdb/reconcile.d.ts +6 -0
- package/dist/esm/store/duckdb/reconcile.js +141 -0
- package/dist/esm/store/duckdb/reconcile.js.map +1 -0
- package/dist/esm/store/duckdb/sql-functions.d.ts +2 -0
- package/dist/esm/store/duckdb/sql-functions.js +56 -0
- package/dist/esm/store/duckdb/sql-functions.js.map +1 -0
- package/dist/esm/store/duckdb/store.d.ts +5 -0
- package/dist/esm/store/duckdb/store.js +104 -0
- package/dist/esm/store/duckdb/store.js.map +1 -0
- package/dist/esm/store/duckdb/vectors.d.ts +9 -0
- package/dist/esm/store/duckdb/vectors.js +171 -0
- package/dist/esm/store/duckdb/vectors.js.map +1 -0
- package/dist/esm/store/index.d.ts +7 -0
- package/dist/esm/store/index.js +35 -0
- package/dist/esm/store/index.js.map +1 -0
- package/dist/esm/store/meta.d.ts +3 -0
- package/dist/esm/store/meta.js +17 -0
- package/dist/esm/store/meta.js.map +1 -0
- package/dist/esm/store/shared.d.ts +5 -0
- package/dist/esm/store/shared.js +24 -0
- package/dist/esm/store/shared.js.map +1 -0
- package/dist/esm/store/sql-functions.d.ts +2 -0
- package/dist/esm/store/sql-functions.js +29 -0
- package/dist/esm/store/sql-functions.js.map +1 -0
- package/dist/esm/store/sqlite/connection.d.ts +3 -0
- package/dist/esm/store/sqlite/connection.js +50 -0
- package/dist/esm/store/sqlite/connection.js.map +1 -0
- package/dist/esm/store/sqlite/lexical.d.ts +2 -0
- package/dist/esm/store/sqlite/lexical.js +21 -0
- package/dist/esm/store/sqlite/lexical.js.map +1 -0
- package/dist/esm/{db → store/sqlite}/open.d.ts +5 -5
- package/dist/esm/store/sqlite/open.js +193 -0
- package/dist/esm/store/sqlite/open.js.map +1 -0
- package/dist/esm/store/sqlite/reconcile.d.ts +10 -0
- package/dist/esm/{db → store/sqlite}/reconcile.js +101 -99
- package/dist/esm/store/sqlite/reconcile.js.map +1 -0
- package/dist/esm/store/sqlite/sql-functions.js +23 -0
- package/dist/esm/store/sqlite/sql-functions.js.map +1 -0
- package/dist/esm/store/sqlite/store.d.ts +5 -0
- package/dist/esm/store/sqlite/store.js +82 -0
- package/dist/esm/store/sqlite/store.js.map +1 -0
- package/dist/esm/store/sqlite/vectors.d.ts +13 -0
- package/dist/esm/store/sqlite/vectors.js +90 -0
- package/dist/esm/store/sqlite/vectors.js.map +1 -0
- package/dist/esm/store/transaction.d.ts +5 -0
- package/dist/esm/store/transaction.js +57 -0
- package/dist/esm/store/transaction.js.map +1 -0
- package/dist/esm/store/types.d.ts +91 -0
- package/dist/esm/store/types.js +11 -0
- package/dist/esm/store/types.js.map +1 -0
- package/dist/esm/watch.d.ts +3 -0
- package/dist/esm/watch.js +39 -22
- package/dist/esm/watch.js.map +1 -1
- package/package.json +3 -1
- package/schema.json +5 -0
- package/skills/sense/EXAMPLES.md +3 -3
- package/skills/sense/SKILL.md +16 -14
- package/skills/sense-bases/EXAMPLES.md +2 -2
- package/skills/sense-bases/SKILL.md +6 -6
- package/skills/sense-setup/EXAMPLES.md +1 -1
- package/skills/sense-setup/SKILL.md +5 -4
- package/dist/cjs/db/index.d.cts +0 -4
- package/dist/cjs/db/index.d.ts +0 -4
- package/dist/cjs/db/index.js +0 -42
- package/dist/cjs/db/index.js.map +0 -1
- package/dist/cjs/db/open.js +0 -230
- package/dist/cjs/db/open.js.map +0 -1
- package/dist/cjs/db/reconcile.d.cts +0 -10
- package/dist/cjs/db/reconcile.d.ts +0 -10
- package/dist/cjs/db/reconcile.js +0 -579
- package/dist/cjs/db/reconcile.js.map +0 -1
- package/dist/cjs/db/shared.d.cts +0 -5
- package/dist/cjs/db/shared.d.ts +0 -5
- package/dist/cjs/db/shared.js +0 -45
- package/dist/cjs/db/shared.js.map +0 -1
- package/dist/cjs/db/sql-functions.js +0 -64
- package/dist/cjs/db/sql-functions.js.map +0 -1
- package/dist/esm/db/index.d.ts +0 -4
- package/dist/esm/db/index.js +0 -5
- package/dist/esm/db/index.js.map +0 -1
- package/dist/esm/db/open.js +0 -165
- package/dist/esm/db/open.js.map +0 -1
- package/dist/esm/db/reconcile.d.ts +0 -10
- package/dist/esm/db/reconcile.js.map +0 -1
- package/dist/esm/db/shared.d.ts +0 -5
- package/dist/esm/db/shared.js +0 -20
- package/dist/esm/db/shared.js.map +0 -1
- package/dist/esm/db/sql-functions.js +0 -47
- package/dist/esm/db/sql-functions.js.map +0 -1
- /package/dist/cjs/{db → store/sqlite}/sql-functions.d.cts +0 -0
- /package/dist/cjs/{db → store/sqlite}/sql-functions.d.ts +0 -0
- /package/dist/esm/{db → store/sqlite}/sql-functions.d.ts +0 -0
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get scanCandidates () {
|
|
13
|
+
return scanCandidates;
|
|
14
|
+
},
|
|
15
|
+
get scanSimilar () {
|
|
16
|
+
return scanSimilar;
|
|
17
|
+
},
|
|
18
|
+
get writeVectorBatch () {
|
|
19
|
+
return writeVectorBatch;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var _transactionts = require("../transaction.js");
|
|
23
|
+
var _batchts = require("./batch.js");
|
|
24
|
+
var _nativets = require("./native.js");
|
|
25
|
+
function _array_like_to_array(arr, len) {
|
|
26
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
27
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
28
|
+
return arr2;
|
|
29
|
+
}
|
|
30
|
+
function _array_without_holes(arr) {
|
|
31
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
32
|
+
}
|
|
33
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
34
|
+
try {
|
|
35
|
+
var info = gen[key](arg);
|
|
36
|
+
var value = info.value;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
reject(error);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (info.done) resolve(value);
|
|
42
|
+
else Promise.resolve(value).then(_next, _throw);
|
|
43
|
+
}
|
|
44
|
+
function _async_to_generator(fn) {
|
|
45
|
+
return function() {
|
|
46
|
+
var self = this, args = arguments;
|
|
47
|
+
return new Promise(function(resolve, reject) {
|
|
48
|
+
var gen = fn.apply(self, args);
|
|
49
|
+
function _next(value) {
|
|
50
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
51
|
+
}
|
|
52
|
+
function _throw(err) {
|
|
53
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
54
|
+
}
|
|
55
|
+
_next(undefined);
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function _iterable_to_array(iter) {
|
|
60
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
|
|
61
|
+
return Array.from(iter);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function _non_iterable_spread() {
|
|
65
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
66
|
+
}
|
|
67
|
+
function _to_consumable_array(arr) {
|
|
68
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
69
|
+
}
|
|
70
|
+
function _ts_generator(thisArg, body) {
|
|
71
|
+
var f, y, t, _ = {
|
|
72
|
+
label: 0,
|
|
73
|
+
sent: function() {
|
|
74
|
+
if (t[0] & 1) throw t[1];
|
|
75
|
+
return t[1];
|
|
76
|
+
},
|
|
77
|
+
trys: [],
|
|
78
|
+
ops: []
|
|
79
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
80
|
+
return d(g, "next", {
|
|
81
|
+
value: verb(0)
|
|
82
|
+
}), d(g, "throw", {
|
|
83
|
+
value: verb(1)
|
|
84
|
+
}), d(g, "return", {
|
|
85
|
+
value: verb(2)
|
|
86
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
87
|
+
value: function() {
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
}), g;
|
|
91
|
+
function verb(n) {
|
|
92
|
+
return function(v) {
|
|
93
|
+
return step([
|
|
94
|
+
n,
|
|
95
|
+
v
|
|
96
|
+
]);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function step(op) {
|
|
100
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
101
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
102
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
103
|
+
if (y = 0, t) op = [
|
|
104
|
+
op[0] & 2,
|
|
105
|
+
t.value
|
|
106
|
+
];
|
|
107
|
+
switch(op[0]){
|
|
108
|
+
case 0:
|
|
109
|
+
case 1:
|
|
110
|
+
t = op;
|
|
111
|
+
break;
|
|
112
|
+
case 4:
|
|
113
|
+
_.label++;
|
|
114
|
+
return {
|
|
115
|
+
value: op[1],
|
|
116
|
+
done: false
|
|
117
|
+
};
|
|
118
|
+
case 5:
|
|
119
|
+
_.label++;
|
|
120
|
+
y = op[1];
|
|
121
|
+
op = [
|
|
122
|
+
0
|
|
123
|
+
];
|
|
124
|
+
continue;
|
|
125
|
+
case 7:
|
|
126
|
+
op = _.ops.pop();
|
|
127
|
+
_.trys.pop();
|
|
128
|
+
continue;
|
|
129
|
+
default:
|
|
130
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
131
|
+
_ = 0;
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
135
|
+
_.label = op[1];
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
139
|
+
_.label = t[1];
|
|
140
|
+
t = op;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
if (t && _.label < t[2]) {
|
|
144
|
+
_.label = t[2];
|
|
145
|
+
_.ops.push(op);
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
if (t[2]) _.ops.pop();
|
|
149
|
+
_.trys.pop();
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
op = body.call(thisArg, _);
|
|
153
|
+
} catch (e) {
|
|
154
|
+
op = [
|
|
155
|
+
6,
|
|
156
|
+
e
|
|
157
|
+
];
|
|
158
|
+
y = 0;
|
|
159
|
+
} finally{
|
|
160
|
+
f = t = 0;
|
|
161
|
+
}
|
|
162
|
+
if (op[0] & 5) throw op[1];
|
|
163
|
+
return {
|
|
164
|
+
value: op[0] ? op[1] : void 0,
|
|
165
|
+
done: true
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
170
|
+
if (!o) return;
|
|
171
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
172
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
173
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
174
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
175
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
176
|
+
}
|
|
177
|
+
// This store keeps vectors as native FLOAT[dims] arrays (dims fixed at DDL time by
|
|
178
|
+
// duckdb/open.ts's ensureSchema, from embed/types.ts's STORE_DIMS) and scans them with
|
|
179
|
+
// array_cosine_similarity, pushing top-k into SQL instead of pulling every row into JS --
|
|
180
|
+
// sqlite's int8+scale BLOB scan (src/store/sqlite/vectors.ts) is the other store's own
|
|
181
|
+
// representation and stays as it is. Every function here takes `dims` as a parameter rather
|
|
182
|
+
// than importing STORE_DIMS directly, so it is testable at any width (store.ts wires the real
|
|
183
|
+
// constant at the call site).
|
|
184
|
+
//
|
|
185
|
+
// A value import of '@duckdb/node-api' must never sit at module top level, or a sqlite-only
|
|
186
|
+
// tree would resolve this optional dependency just by importing store/index.ts -- native.ts's
|
|
187
|
+
// shared duckdbApi() (not a bare import of its own) is what keeps that lazy and reuses whatever
|
|
188
|
+
// open.ts already resolved, including via an on-demand install (see native.ts).
|
|
189
|
+
// A bind position whose type is left to auto-inference (safe for plain strings/numbers; only
|
|
190
|
+
// the vector ARRAY positions below need an explicit type -- see writeVectorBatch's comment).
|
|
191
|
+
var untyped = undefined;
|
|
192
|
+
// Seed chunks that participate in a `related` scan; must match sqlite/vectors.ts's
|
|
193
|
+
// TARGET_CHUNK_CAP for identical sampling behavior (see that file for the measurement it's
|
|
194
|
+
// based on -- 12.7s at 201 chunks/note without sampling).
|
|
195
|
+
var TARGET_CHUNK_CAP = 16;
|
|
196
|
+
// array_cosine_similarity is already a true cosine (no int8 accumulation to push slightly
|
|
197
|
+
// outside [-1, 1]), but rounded the same way sqlite's scores are so both stores print the
|
|
198
|
+
// same bounded number rather than one having more decimal noise than the other.
|
|
199
|
+
function asCosine(score) {
|
|
200
|
+
return Math.round(Math.min(1, Math.max(-1, score)) * 1000) / 1000;
|
|
201
|
+
}
|
|
202
|
+
// The DDL-fixed array width can exceed a vector's actual length (a hypothetical model sliced
|
|
203
|
+
// under the column's width); zero-padding leaves cosine scores unchanged since the added
|
|
204
|
+
// dimensions contribute nothing to either vector's dot product or norm.
|
|
205
|
+
function padded(values, dims) {
|
|
206
|
+
var out = new Array(dims).fill(0);
|
|
207
|
+
for(var d = 0; d < Math.min(values.length, dims); d++)out[d] = values[d];
|
|
208
|
+
return out;
|
|
209
|
+
}
|
|
210
|
+
function inClause(column, count) {
|
|
211
|
+
return "".concat(column, " IN (").concat(Array.from({
|
|
212
|
+
length: count
|
|
213
|
+
}, function() {
|
|
214
|
+
return '?';
|
|
215
|
+
}).join(', '), ")");
|
|
216
|
+
}
|
|
217
|
+
// Rows arrive int8-quantized with a per-vector scale (the wire format embed/query.ts produces
|
|
218
|
+
// for every store, see toStore); dequantizing into a plain float array is this store's own
|
|
219
|
+
// representation choice, so both stores are handed the same vectors and diverge only here.
|
|
220
|
+
function dequantize(row, dims) {
|
|
221
|
+
var q = new Int8Array(row.vector.buffer, row.vector.byteOffset, row.vector.byteLength);
|
|
222
|
+
return padded(Array.from(q, function(v) {
|
|
223
|
+
return v * row.scale;
|
|
224
|
+
}), dims);
|
|
225
|
+
}
|
|
226
|
+
function writeVectorBatch(duckdb, conn, dims, rows) {
|
|
227
|
+
return _async_to_generator(function() {
|
|
228
|
+
var _ref, arrayValue, ARRAY, DOUBLE, rewritten;
|
|
229
|
+
return _ts_generator(this, function(_state) {
|
|
230
|
+
switch(_state.label){
|
|
231
|
+
case 0:
|
|
232
|
+
if (rows.length === 0) return [
|
|
233
|
+
2
|
|
234
|
+
];
|
|
235
|
+
return [
|
|
236
|
+
4,
|
|
237
|
+
(0, _nativets.duckdbApi)()
|
|
238
|
+
];
|
|
239
|
+
case 1:
|
|
240
|
+
_ref = _state.sent(), arrayValue = _ref.arrayValue, ARRAY = _ref.ARRAY, DOUBLE = _ref.DOUBLE;
|
|
241
|
+
rewritten = (0, _batchts.rewriteUpdate)('UPDATE embeddings SET vector = ? WHERE "path" = ? AND chunk = ?', rows.length);
|
|
242
|
+
if (!rewritten) throw new Error('duckdb: writeVectorBatch SQL shape not recognized by rewriteUpdate');
|
|
243
|
+
return [
|
|
244
|
+
4,
|
|
245
|
+
(0, _transactionts.withTransaction)(conn, function() {
|
|
246
|
+
return _async_to_generator(function() {
|
|
247
|
+
var stmt, values, types, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, row;
|
|
248
|
+
return _ts_generator(this, function(_state) {
|
|
249
|
+
switch(_state.label){
|
|
250
|
+
case 0:
|
|
251
|
+
return [
|
|
252
|
+
4,
|
|
253
|
+
duckdb.prepare(rewritten.sql)
|
|
254
|
+
];
|
|
255
|
+
case 1:
|
|
256
|
+
stmt = _state.sent();
|
|
257
|
+
_state.label = 2;
|
|
258
|
+
case 2:
|
|
259
|
+
_state.trys.push([
|
|
260
|
+
2,
|
|
261
|
+
,
|
|
262
|
+
4,
|
|
263
|
+
5
|
|
264
|
+
]);
|
|
265
|
+
values = [];
|
|
266
|
+
types = [];
|
|
267
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
268
|
+
try {
|
|
269
|
+
for(_iterator = rows[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
270
|
+
row = _step.value;
|
|
271
|
+
values.push(arrayValue(dequantize(row, dims)), row.path, row.chunk);
|
|
272
|
+
types.push(ARRAY(DOUBLE, dims), untyped, untyped);
|
|
273
|
+
}
|
|
274
|
+
} catch (err) {
|
|
275
|
+
_didIteratorError = true;
|
|
276
|
+
_iteratorError = err;
|
|
277
|
+
} finally{
|
|
278
|
+
try {
|
|
279
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
280
|
+
_iterator.return();
|
|
281
|
+
}
|
|
282
|
+
} finally{
|
|
283
|
+
if (_didIteratorError) {
|
|
284
|
+
throw _iteratorError;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
stmt.bind(values, types);
|
|
289
|
+
return [
|
|
290
|
+
4,
|
|
291
|
+
stmt.run()
|
|
292
|
+
];
|
|
293
|
+
case 3:
|
|
294
|
+
_state.sent();
|
|
295
|
+
return [
|
|
296
|
+
3,
|
|
297
|
+
5
|
|
298
|
+
];
|
|
299
|
+
case 4:
|
|
300
|
+
stmt.destroySync();
|
|
301
|
+
return [
|
|
302
|
+
7
|
|
303
|
+
];
|
|
304
|
+
case 5:
|
|
305
|
+
return [
|
|
306
|
+
2
|
|
307
|
+
];
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
})();
|
|
311
|
+
})
|
|
312
|
+
];
|
|
313
|
+
case 2:
|
|
314
|
+
_state.sent();
|
|
315
|
+
return [
|
|
316
|
+
2
|
|
317
|
+
];
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
})();
|
|
321
|
+
}
|
|
322
|
+
function scanCandidates(duckdb, qv, dims, fetch, allowed) {
|
|
323
|
+
return _async_to_generator(function() {
|
|
324
|
+
var _ref, arrayValue, ARRAY, DOUBLE, allowedList, sql, stmt, values, types, reader, rows;
|
|
325
|
+
return _ts_generator(this, function(_state) {
|
|
326
|
+
switch(_state.label){
|
|
327
|
+
case 0:
|
|
328
|
+
if (allowed && allowed.size === 0) return [
|
|
329
|
+
2,
|
|
330
|
+
[]
|
|
331
|
+
];
|
|
332
|
+
return [
|
|
333
|
+
4,
|
|
334
|
+
(0, _nativets.duckdbApi)()
|
|
335
|
+
];
|
|
336
|
+
case 1:
|
|
337
|
+
_ref = _state.sent(), arrayValue = _ref.arrayValue, ARRAY = _ref.ARRAY, DOUBLE = _ref.DOUBLE;
|
|
338
|
+
allowedList = allowed ? _to_consumable_array(allowed) : [];
|
|
339
|
+
sql = 'SELECT "path", arg_max(start_line, score) AS start_line, arg_max(end_line, score) AS end_line, max(score) AS score\n FROM (\n SELECT "path", start_line, end_line, array_cosine_similarity(vector, ?) AS score\n FROM embeddings\n WHERE vector IS NOT NULL '.concat(allowed ? "AND ".concat(inClause('"path"', allowedList.length)) : '', '\n ) sub\n GROUP BY "path"\n ORDER BY score DESC\n LIMIT ?');
|
|
340
|
+
return [
|
|
341
|
+
4,
|
|
342
|
+
duckdb.prepare(sql)
|
|
343
|
+
];
|
|
344
|
+
case 2:
|
|
345
|
+
stmt = _state.sent();
|
|
346
|
+
_state.label = 3;
|
|
347
|
+
case 3:
|
|
348
|
+
_state.trys.push([
|
|
349
|
+
3,
|
|
350
|
+
,
|
|
351
|
+
5,
|
|
352
|
+
6
|
|
353
|
+
]);
|
|
354
|
+
values = [
|
|
355
|
+
arrayValue(padded(qv, dims))
|
|
356
|
+
].concat(_to_consumable_array(allowedList), [
|
|
357
|
+
fetch
|
|
358
|
+
]);
|
|
359
|
+
types = [
|
|
360
|
+
ARRAY(DOUBLE, dims)
|
|
361
|
+
].concat(_to_consumable_array(allowedList.map(function() {
|
|
362
|
+
return untyped;
|
|
363
|
+
})), [
|
|
364
|
+
untyped
|
|
365
|
+
]);
|
|
366
|
+
stmt.bind(values, types);
|
|
367
|
+
return [
|
|
368
|
+
4,
|
|
369
|
+
stmt.runAndReadAll()
|
|
370
|
+
];
|
|
371
|
+
case 4:
|
|
372
|
+
reader = _state.sent();
|
|
373
|
+
rows = reader.getRowObjectsJS();
|
|
374
|
+
return [
|
|
375
|
+
2,
|
|
376
|
+
rows.map(function(r) {
|
|
377
|
+
return {
|
|
378
|
+
path: r.path,
|
|
379
|
+
lines: "L".concat(r.start_line, "-").concat(r.end_line),
|
|
380
|
+
similarity: asCosine(r.score)
|
|
381
|
+
};
|
|
382
|
+
})
|
|
383
|
+
];
|
|
384
|
+
case 5:
|
|
385
|
+
stmt.destroySync();
|
|
386
|
+
return [
|
|
387
|
+
7
|
|
388
|
+
];
|
|
389
|
+
case 6:
|
|
390
|
+
return [
|
|
391
|
+
2
|
|
392
|
+
];
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
})();
|
|
396
|
+
}
|
|
397
|
+
function scanSimilar(duckdb, conn, dims, path, opts) {
|
|
398
|
+
return _async_to_generator(function() {
|
|
399
|
+
var targetStmt, targetRows, step, targets, _ref, arrayValue, ARRAY, DOUBLE, excludeList, allowedList, sql, stmt, values, types, reader, rows;
|
|
400
|
+
return _ts_generator(this, function(_state) {
|
|
401
|
+
switch(_state.label){
|
|
402
|
+
case 0:
|
|
403
|
+
if (opts.allowed && opts.allowed.size === 0) return [
|
|
404
|
+
2,
|
|
405
|
+
[]
|
|
406
|
+
];
|
|
407
|
+
return [
|
|
408
|
+
4,
|
|
409
|
+
conn.prepare('SELECT vector FROM embeddings WHERE "path" = ? AND vector IS NOT NULL ORDER BY chunk')
|
|
410
|
+
];
|
|
411
|
+
case 1:
|
|
412
|
+
targetStmt = _state.sent();
|
|
413
|
+
return [
|
|
414
|
+
4,
|
|
415
|
+
targetStmt.all(path)
|
|
416
|
+
];
|
|
417
|
+
case 2:
|
|
418
|
+
targetRows = _state.sent();
|
|
419
|
+
if (targetRows.length === 0) return [
|
|
420
|
+
2,
|
|
421
|
+
[]
|
|
422
|
+
];
|
|
423
|
+
step = Math.max(1, Math.ceil(targetRows.length / TARGET_CHUNK_CAP));
|
|
424
|
+
targets = targetRows.filter(function(_, i) {
|
|
425
|
+
return i % step === 0;
|
|
426
|
+
}).map(function(row) {
|
|
427
|
+
return row.vector;
|
|
428
|
+
});
|
|
429
|
+
return [
|
|
430
|
+
4,
|
|
431
|
+
(0, _nativets.duckdbApi)()
|
|
432
|
+
];
|
|
433
|
+
case 3:
|
|
434
|
+
_ref = _state.sent(), arrayValue = _ref.arrayValue, ARRAY = _ref.ARRAY, DOUBLE = _ref.DOUBLE;
|
|
435
|
+
excludeList = _to_consumable_array(opts.exclude);
|
|
436
|
+
allowedList = opts.allowed ? _to_consumable_array(opts.allowed) : [];
|
|
437
|
+
sql = "WITH targets(tv) AS (VALUES ".concat(targets.map(function() {
|
|
438
|
+
return '(?)';
|
|
439
|
+
}).join(', '), ')\n SELECT e."path" AS path, max(array_cosine_similarity(e.vector, t.tv)) AS score\n FROM embeddings e, targets t\n WHERE e.vector IS NOT NULL AND e."path" != ?\n ').concat(excludeList.length > 0 ? "AND NOT ".concat(inClause('e."path"', excludeList.length)) : '', "\n ").concat(opts.allowed ? "AND ".concat(inClause('e."path"', allowedList.length)) : '', '\n GROUP BY e."path"\n ORDER BY score DESC\n LIMIT ?');
|
|
440
|
+
return [
|
|
441
|
+
4,
|
|
442
|
+
duckdb.prepare(sql)
|
|
443
|
+
];
|
|
444
|
+
case 4:
|
|
445
|
+
stmt = _state.sent();
|
|
446
|
+
_state.label = 5;
|
|
447
|
+
case 5:
|
|
448
|
+
_state.trys.push([
|
|
449
|
+
5,
|
|
450
|
+
,
|
|
451
|
+
7,
|
|
452
|
+
8
|
|
453
|
+
]);
|
|
454
|
+
values = _to_consumable_array(targets.map(function(t) {
|
|
455
|
+
return arrayValue(padded(t, dims));
|
|
456
|
+
})).concat([
|
|
457
|
+
path
|
|
458
|
+
], _to_consumable_array(excludeList), _to_consumable_array(allowedList), [
|
|
459
|
+
opts.k
|
|
460
|
+
]);
|
|
461
|
+
types = _to_consumable_array(targets.map(function() {
|
|
462
|
+
return ARRAY(DOUBLE, dims);
|
|
463
|
+
})).concat([
|
|
464
|
+
untyped
|
|
465
|
+
], _to_consumable_array(excludeList.map(function() {
|
|
466
|
+
return untyped;
|
|
467
|
+
})), _to_consumable_array(allowedList.map(function() {
|
|
468
|
+
return untyped;
|
|
469
|
+
})), [
|
|
470
|
+
untyped
|
|
471
|
+
]);
|
|
472
|
+
stmt.bind(values, types);
|
|
473
|
+
return [
|
|
474
|
+
4,
|
|
475
|
+
stmt.runAndReadAll()
|
|
476
|
+
];
|
|
477
|
+
case 6:
|
|
478
|
+
reader = _state.sent();
|
|
479
|
+
rows = reader.getRowObjectsJS();
|
|
480
|
+
return [
|
|
481
|
+
2,
|
|
482
|
+
rows.map(function(r) {
|
|
483
|
+
return {
|
|
484
|
+
path: r.path,
|
|
485
|
+
similarity: asCosine(r.score)
|
|
486
|
+
};
|
|
487
|
+
})
|
|
488
|
+
];
|
|
489
|
+
case 7:
|
|
490
|
+
stmt.destroySync();
|
|
491
|
+
return [
|
|
492
|
+
7
|
|
493
|
+
];
|
|
494
|
+
case 8:
|
|
495
|
+
return [
|
|
496
|
+
2
|
|
497
|
+
];
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
})();
|
|
501
|
+
}
|
|
502
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/store/duckdb/vectors.ts"],"sourcesContent":["import type { DuckDBConnection, DuckDBType, DuckDBValue } from '@duckdb/node-api';\nimport { withTransaction } from '../transaction.ts';\nimport type { Connection, VectorCandidate, VectorSimilar, VectorWriteRow } from '../types.ts';\nimport { rewriteUpdate } from './batch.ts';\nimport { duckdbApi } from './native.ts';\n\n// This store keeps vectors as native FLOAT[dims] arrays (dims fixed at DDL time by\n// duckdb/open.ts's ensureSchema, from embed/types.ts's STORE_DIMS) and scans them with\n// array_cosine_similarity, pushing top-k into SQL instead of pulling every row into JS --\n// sqlite's int8+scale BLOB scan (src/store/sqlite/vectors.ts) is the other store's own\n// representation and stays as it is. Every function here takes `dims` as a parameter rather\n// than importing STORE_DIMS directly, so it is testable at any width (store.ts wires the real\n// constant at the call site).\n//\n// A value import of '@duckdb/node-api' must never sit at module top level, or a sqlite-only\n// tree would resolve this optional dependency just by importing store/index.ts -- native.ts's\n// shared duckdbApi() (not a bare import of its own) is what keeps that lazy and reuses whatever\n// open.ts already resolved, including via an on-demand install (see native.ts).\n\n// A bind position whose type is left to auto-inference (safe for plain strings/numbers; only\n// the vector ARRAY positions below need an explicit type -- see writeVectorBatch's comment).\nconst untyped = undefined as unknown as DuckDBType;\n\n// Seed chunks that participate in a `related` scan; must match sqlite/vectors.ts's\n// TARGET_CHUNK_CAP for identical sampling behavior (see that file for the measurement it's\n// based on -- 12.7s at 201 chunks/note without sampling).\nconst TARGET_CHUNK_CAP = 16;\n\n// array_cosine_similarity is already a true cosine (no int8 accumulation to push slightly\n// outside [-1, 1]), but rounded the same way sqlite's scores are so both stores print the\n// same bounded number rather than one having more decimal noise than the other.\nfunction asCosine(score: number): number {\n return Math.round(Math.min(1, Math.max(-1, score)) * 1000) / 1000;\n}\n\n// The DDL-fixed array width can exceed a vector's actual length (a hypothetical model sliced\n// under the column's width); zero-padding leaves cosine scores unchanged since the added\n// dimensions contribute nothing to either vector's dot product or norm.\nfunction padded(values: ArrayLike<number>, dims: number): number[] {\n const out = new Array<number>(dims).fill(0);\n for (let d = 0; d < Math.min(values.length, dims); d++) out[d] = values[d];\n return out;\n}\n\nfunction inClause(column: string, count: number): string {\n return `${column} IN (${Array.from({ length: count }, () => '?').join(', ')})`;\n}\n\n// Rows arrive int8-quantized with a per-vector scale (the wire format embed/query.ts produces\n// for every store, see toStore); dequantizing into a plain float array is this store's own\n// representation choice, so both stores are handed the same vectors and diverge only here.\nfunction dequantize(row: VectorWriteRow, dims: number): number[] {\n const q = new Int8Array(row.vector.buffer, row.vector.byteOffset, row.vector.byteLength);\n return padded(\n Array.from(q, (v) => v * row.scale),\n dims\n );\n}\n\n// One runBatch-equivalent call per provider batch: a single multi-row UPDATE (batch.ts's\n// rewriteUpdate, the same rewrite Connection.runBatch uses), bound directly against the native\n// connection because the vector column needs an explicit ARRAY(DOUBLE, dims) bind type --\n// automatic type inference on the raw values misreads an all-integer first component (a real\n// vector's exact 0.0 is common) as an INTEGER array and silently truncates the rest of the row\n// (verified against a live connection: an untyped bind of [0, 0.35, 0.1, -0.2] stores [0,0,0,0]).\nexport async function writeVectorBatch(duckdb: DuckDBConnection, conn: Connection, dims: number, rows: VectorWriteRow[]): Promise<void> {\n if (rows.length === 0) return;\n const { arrayValue, ARRAY, DOUBLE } = await duckdbApi();\n const rewritten = rewriteUpdate('UPDATE embeddings SET vector = ? WHERE \"path\" = ? AND chunk = ?', rows.length);\n if (!rewritten) throw new Error('duckdb: writeVectorBatch SQL shape not recognized by rewriteUpdate');\n\n await withTransaction(conn, async () => {\n const stmt = await duckdb.prepare(rewritten.sql);\n try {\n const values: DuckDBValue[] = [];\n const types: DuckDBType[] = [];\n for (const row of rows) {\n values.push(arrayValue(dequantize(row, dims)), row.path, row.chunk);\n types.push(ARRAY(DOUBLE, dims), untyped, untyped);\n }\n stmt.bind(values, types);\n await stmt.run();\n } finally {\n stmt.destroySync();\n }\n });\n}\n\n// Best chunk per file by cosine, its line range riding along, entirely in SQL: arg_max picks\n// the winning chunk's line range from the same row max(score) came from, per path. An empty\n// `allowed` set matches sqlite's scan (every row filtered out) without touching the table.\nexport async function scanCandidates(duckdb: DuckDBConnection, qv: Float32Array, dims: number, fetch: number, allowed?: Set<string>): Promise<VectorCandidate[]> {\n if (allowed && allowed.size === 0) return [];\n const { arrayValue, ARRAY, DOUBLE } = await duckdbApi();\n const allowedList = allowed ? [...allowed] : [];\n const sql = `SELECT \"path\", arg_max(start_line, score) AS start_line, arg_max(end_line, score) AS end_line, max(score) AS score\n FROM (\n SELECT \"path\", start_line, end_line, array_cosine_similarity(vector, ?) AS score\n FROM embeddings\n WHERE vector IS NOT NULL ${allowed ? `AND ${inClause('\"path\"', allowedList.length)}` : ''}\n ) sub\n GROUP BY \"path\"\n ORDER BY score DESC\n LIMIT ?`;\n const stmt = await duckdb.prepare(sql);\n try {\n const values: DuckDBValue[] = [arrayValue(padded(qv, dims)), ...allowedList, fetch];\n const types: DuckDBType[] = [ARRAY(DOUBLE, dims), ...allowedList.map(() => untyped), untyped];\n stmt.bind(values, types);\n const reader = await stmt.runAndReadAll();\n const rows = reader.getRowObjectsJS() as Array<{ path: string; start_line: number; end_line: number; score: number }>;\n return rows.map((r) => ({ path: r.path, lines: `L${r.start_line}-${r.end_line}`, similarity: asCosine(r.score) }));\n } finally {\n stmt.destroySync();\n }\n}\n\n// Note-to-note similarity is the max cosine over (target chunk, other chunk) pairs, pushed\n// into one native scan: the sampled target vectors become a small VALUES list, cross-joined\n// against every stored vector and reduced with max()/GROUP BY, so the O(target x stored) cost\n// the plan measures (12.7s at 201 chunks/note in JS) runs vectorized instead of scalar.\nexport async function scanSimilar(duckdb: DuckDBConnection, conn: Connection, dims: number, path: string, opts: { exclude: Set<string>; allowed?: Set<string>; k: number }): Promise<VectorSimilar[]> {\n if (opts.allowed && opts.allowed.size === 0) return [];\n const targetStmt = await conn.prepare('SELECT vector FROM embeddings WHERE \"path\" = ? AND vector IS NOT NULL ORDER BY chunk');\n const targetRows = (await targetStmt.all(path)) as Array<{ vector: number[] }>;\n if (targetRows.length === 0) return [];\n const step = Math.max(1, Math.ceil(targetRows.length / TARGET_CHUNK_CAP));\n const targets = targetRows.filter((_, i) => i % step === 0).map((row) => row.vector);\n\n const { arrayValue, ARRAY, DOUBLE } = await duckdbApi();\n const excludeList = [...opts.exclude];\n const allowedList = opts.allowed ? [...opts.allowed] : [];\n const sql = `WITH targets(tv) AS (VALUES ${targets.map(() => '(?)').join(', ')})\n SELECT e.\"path\" AS path, max(array_cosine_similarity(e.vector, t.tv)) AS score\n FROM embeddings e, targets t\n WHERE e.vector IS NOT NULL AND e.\"path\" != ?\n ${excludeList.length > 0 ? `AND NOT ${inClause('e.\"path\"', excludeList.length)}` : ''}\n ${opts.allowed ? `AND ${inClause('e.\"path\"', allowedList.length)}` : ''}\n GROUP BY e.\"path\"\n ORDER BY score DESC\n LIMIT ?`;\n const stmt = await duckdb.prepare(sql);\n try {\n const values: DuckDBValue[] = [...targets.map((t) => arrayValue(padded(t, dims))), path, ...excludeList, ...allowedList, opts.k];\n const types: DuckDBType[] = [...targets.map(() => ARRAY(DOUBLE, dims)), untyped, ...excludeList.map(() => untyped), ...allowedList.map(() => untyped), untyped];\n stmt.bind(values, types);\n const reader = await stmt.runAndReadAll();\n const rows = reader.getRowObjectsJS() as Array<{ path: string; score: number }>;\n return rows.map((r) => ({ path: r.path, similarity: asCosine(r.score) }));\n } finally {\n stmt.destroySync();\n }\n}\n"],"names":["scanCandidates","scanSimilar","writeVectorBatch","untyped","undefined","TARGET_CHUNK_CAP","asCosine","score","Math","round","min","max","padded","values","dims","out","Array","fill","d","length","inClause","column","count","from","join","dequantize","row","q","Int8Array","vector","buffer","byteOffset","byteLength","v","scale","duckdb","conn","rows","arrayValue","ARRAY","DOUBLE","rewritten","duckdbApi","rewriteUpdate","Error","withTransaction","stmt","types","prepare","sql","push","path","chunk","bind","run","destroySync","qv","fetch","allowed","allowedList","reader","size","map","runAndReadAll","getRowObjectsJS","r","lines","start_line","end_line","similarity","opts","targetStmt","targetRows","step","targets","excludeList","all","ceil","filter","_","i","exclude","t","k"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ResolvedConfig } from '../config/index.js';
|
|
2
|
+
import type { OpenResult } from './sqlite/open.js';
|
|
3
|
+
export declare function openStore(cfg: ResolvedConfig): Promise<OpenResult>;
|
|
4
|
+
export { getMeta, setMeta } from './meta.js';
|
|
5
|
+
export type { OpenResult } from './sqlite/open.js';
|
|
6
|
+
export { clearCache, DB_FILENAME, docCount, SCHEMA_VERSION } from './sqlite/open.js';
|
|
7
|
+
export type { Capability, Connection, DocumentStore, LexicalHit, LexicalIndex, LexicalQueryOptions, RawStatement, RunResult, SqlSession, Statement, Store, VectorCandidate, VectorSimilar, VectorStore, VectorWriteRow } from './types.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ResolvedConfig } from '../config/index.js';
|
|
2
|
+
import type { OpenResult } from './sqlite/open.js';
|
|
3
|
+
export declare function openStore(cfg: ResolvedConfig): Promise<OpenResult>;
|
|
4
|
+
export { getMeta, setMeta } from './meta.js';
|
|
5
|
+
export type { OpenResult } from './sqlite/open.js';
|
|
6
|
+
export { clearCache, DB_FILENAME, docCount, SCHEMA_VERSION } from './sqlite/open.js';
|
|
7
|
+
export type { Capability, Connection, DocumentStore, LexicalHit, LexicalIndex, LexicalQueryOptions, RawStatement, RunResult, SqlSession, Statement, Store, VectorCandidate, VectorSimilar, VectorStore, VectorWriteRow } from './types.js';
|