sensemaking 0.17.0 → 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 +147 -6
- package/dist/cjs/cli/map.js.map +1 -1
- package/dist/cjs/cli/named.js +20 -12
- package/dist/cjs/cli/named.js.map +1 -1
- package/dist/cjs/cli/path.js +190 -29
- package/dist/cjs/cli/path.js.map +1 -1
- package/dist/cjs/cli/peek.js +148 -7
- package/dist/cjs/cli/peek.js.map +1 -1
- package/dist/cjs/cli/related.js +5 -5
- package/dist/cjs/cli/related.js.map +1 -1
- package/dist/cjs/cli/search.js +5 -5
- 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 +187 -62
- 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 +4 -0
- package/dist/cjs/embed/distribution.d.ts +4 -0
- package/dist/cjs/embed/distribution.js +186 -0
- package/dist/cjs/embed/distribution.js.map +1 -0
- package/dist/cjs/embed/langfit.d.cts +2 -5
- package/dist/cjs/embed/langfit.d.ts +2 -5
- package/dist/cjs/embed/langfit.js +73 -63
- 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/static.js +13 -3
- package/dist/cjs/embed/static.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 +5 -5
- package/dist/esm/cli/map.js.map +1 -1
- package/dist/esm/cli/named.js +3 -3
- package/dist/esm/cli/named.js.map +1 -1
- package/dist/esm/cli/path.js +6 -5
- package/dist/esm/cli/path.js.map +1 -1
- package/dist/esm/cli/peek.js +5 -5
- package/dist/esm/cli/peek.js.map +1 -1
- package/dist/esm/cli/related.js +3 -3
- package/dist/esm/cli/related.js.map +1 -1
- package/dist/esm/cli/search.js +2 -2
- 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 +25 -24
- 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 +4 -0
- package/dist/esm/embed/distribution.js +11 -0
- package/dist/esm/embed/distribution.js.map +1 -0
- package/dist/esm/embed/langfit.d.ts +2 -5
- package/dist/esm/embed/langfit.js +13 -13
- 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/static.js +6 -1
- package/dist/esm/embed/static.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
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import type { DatabaseSync } from 'node:sqlite';
|
|
2
1
|
import type { ResolvedConfig } from '../config/index.js';
|
|
2
|
+
import type { LexicalHit, Store } from '../store/types.js';
|
|
3
3
|
export type Candidates = Map<string, {
|
|
4
4
|
score: number;
|
|
5
5
|
via: string;
|
|
6
6
|
}>;
|
|
7
|
-
export declare function wordsCandidates(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}>;
|
|
11
|
-
export declare function linksCandidates(db: DatabaseSync, candidates: Candidates, matchRows: Array<{
|
|
12
|
-
path: string;
|
|
13
|
-
hit: string | null;
|
|
14
|
-
}>, allPaths: string[], allowedPaths: Set<string>, fetch: number, weight: number): void;
|
|
15
|
-
export declare function vectorsCandidates(db: DatabaseSync, cfg: ResolvedConfig, candidates: Candidates, terms: string, fetch: number, allowedPaths: Set<string>, weight: number): Promise<{
|
|
7
|
+
export declare function wordsCandidates(store: Store, candidates: Candidates, query: string, whereJoin: string, whereCond: string, scopeCond: string, fetch: number, weight: number): Promise<LexicalHit[]>;
|
|
8
|
+
export declare function linksCandidates(store: Store, candidates: Candidates, matchRows: LexicalHit[], allPaths: string[], allowedPaths: Set<string>, fetch: number, weight: number): Promise<void>;
|
|
9
|
+
export declare function vectorsCandidates(store: Store, cfg: ResolvedConfig, candidates: Candidates, terms: string, fetch: number, allowedPaths: Set<string>, weight: number): Promise<{
|
|
16
10
|
chunkLines: Map<string, string>;
|
|
17
11
|
chunkSimilarity: Map<string, number>;
|
|
18
12
|
}>;
|
|
@@ -210,53 +210,99 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
210
210
|
// RRF composes whatever the preset declares; the constant lives here since it belongs to
|
|
211
211
|
// the fusion these three functions share, not to search() itself.
|
|
212
212
|
var RRF_K = 60;
|
|
213
|
-
function wordsCandidates(
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
213
|
+
function wordsCandidates(store, candidates, query, whereJoin, whereCond, scopeCond, fetch, weight) {
|
|
214
|
+
return _async_to_generator(function() {
|
|
215
|
+
var matchRows;
|
|
216
|
+
return _ts_generator(this, function(_state) {
|
|
217
|
+
switch(_state.label){
|
|
218
|
+
case 0:
|
|
219
|
+
return [
|
|
220
|
+
4,
|
|
221
|
+
store.lexical.query(query, {
|
|
222
|
+
whereJoin: whereJoin,
|
|
223
|
+
whereCond: whereCond,
|
|
224
|
+
scopeCond: scopeCond,
|
|
225
|
+
limit: fetch
|
|
226
|
+
})
|
|
227
|
+
];
|
|
228
|
+
case 1:
|
|
229
|
+
matchRows = _state.sent();
|
|
230
|
+
matchRows.forEach(function(r, i) {
|
|
231
|
+
candidates.set(r.path, {
|
|
232
|
+
score: weight / (RRF_K + i),
|
|
233
|
+
via: 'match'
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
return [
|
|
237
|
+
2,
|
|
238
|
+
matchRows
|
|
239
|
+
];
|
|
240
|
+
}
|
|
222
241
|
});
|
|
223
|
-
});
|
|
224
|
-
return matchRows;
|
|
242
|
+
})();
|
|
225
243
|
}
|
|
226
|
-
function linksCandidates(
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
244
|
+
function linksCandidates(store, candidates, matchRows, allPaths, allowedPaths, fetch, weight) {
|
|
245
|
+
return _async_to_generator(function() {
|
|
246
|
+
var stmt, edges, linked, seeds, ranked;
|
|
247
|
+
return _ts_generator(this, function(_state) {
|
|
248
|
+
switch(_state.label){
|
|
249
|
+
case 0:
|
|
250
|
+
if (matchRows.length === 0) return [
|
|
251
|
+
2
|
|
252
|
+
];
|
|
253
|
+
return [
|
|
254
|
+
4,
|
|
255
|
+
store.prepare(_indexts.LINK_EDGES_SQL)
|
|
256
|
+
];
|
|
257
|
+
case 1:
|
|
258
|
+
stmt = _state.sent();
|
|
259
|
+
return [
|
|
260
|
+
4,
|
|
261
|
+
stmt.all()
|
|
262
|
+
];
|
|
263
|
+
case 2:
|
|
264
|
+
edges = _indexts.toEdges.apply(void 0, [
|
|
265
|
+
_state.sent()
|
|
266
|
+
]);
|
|
267
|
+
if (edges.length === 0) return [
|
|
268
|
+
2
|
|
269
|
+
];
|
|
270
|
+
// Gates the label only, not the score: restart mass ranks every seed without an incident
|
|
271
|
+
// edge, but dropping it from the score reweights fusion (FEVER hit@10 0.997 -> 0.907).
|
|
272
|
+
linked = new Set(edges.flat());
|
|
273
|
+
seeds = new Map(matchRows.map(function(r, i) {
|
|
274
|
+
return [
|
|
275
|
+
r.path,
|
|
276
|
+
1 / (i + 1)
|
|
277
|
+
];
|
|
278
|
+
}));
|
|
279
|
+
ranked = _to_consumable_array((0, _graphts.personalizedRank)(allPaths, edges, seeds)).filter(function(param) {
|
|
280
|
+
var _param = _sliced_to_array(param, 2), path = _param[0], score = _param[1];
|
|
281
|
+
return score > 1e-9 && allowedPaths.has(path);
|
|
282
|
+
}).sort(function(a, b) {
|
|
283
|
+
return b[1] - a[1];
|
|
284
|
+
}).slice(0, fetch);
|
|
285
|
+
ranked.forEach(function(param, i) {
|
|
286
|
+
var _param = _sliced_to_array(param, 1), path = _param[0];
|
|
287
|
+
var existing = candidates.get(path);
|
|
288
|
+
if (existing) {
|
|
289
|
+
existing.score += weight / (RRF_K + i);
|
|
290
|
+
if (linked.has(path)) existing.via = 'match+link';
|
|
291
|
+
} else {
|
|
292
|
+
candidates.set(path, {
|
|
293
|
+
score: weight / (RRF_K + i),
|
|
294
|
+
via: 'link'
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
return [
|
|
299
|
+
2
|
|
300
|
+
];
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
})();
|
|
258
304
|
}
|
|
259
|
-
function vectorsCandidates(
|
|
305
|
+
function vectorsCandidates(store, cfg, candidates, terms, fetch, allowedPaths, weight) {
|
|
260
306
|
return _async_to_generator(function() {
|
|
261
307
|
var chunkLines, chunkSimilarity, vec;
|
|
262
308
|
return _ts_generator(this, function(_state) {
|
|
@@ -266,7 +312,7 @@ function vectorsCandidates(db, cfg, candidates, terms, fetch, allowedPaths, weig
|
|
|
266
312
|
chunkSimilarity = new Map();
|
|
267
313
|
return [
|
|
268
314
|
4,
|
|
269
|
-
(0, _queryts.semanticCandidates)(
|
|
315
|
+
(0, _queryts.semanticCandidates)(store, cfg, terms, fetch, allowedPaths)
|
|
270
316
|
];
|
|
271
317
|
case 1:
|
|
272
318
|
vec = _state.sent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/commands/signals.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/commands/signals.ts"],"sourcesContent":["import type { ResolvedConfig } from '../config/index.ts';\nimport { semanticCandidates } from '../embed/query.ts';\nimport { LINK_EDGES_SQL, toEdges } from '../features/index.ts';\nimport { personalizedRank } from '../graph/graph.ts';\nimport type { LexicalHit, Store } from '../store/types.ts';\n\n// RRF composes whatever the preset declares; the constant lives here since it belongs to\n// the fusion these three functions share, not to search() itself.\nconst RRF_K = 60;\n\nexport type Candidates = Map<string, { score: number; via: string }>;\n\n// BM25 match rows (store.lexical.query), folded into `candidates` by reciprocal rank scaled by\n// the preset's declared weight for this signal (default 1, bit-identical to the unweighted\n// score). Every other signal is seeded from its output, so search() runs this one first when\n// \"words\" is declared.\nexport async function wordsCandidates(store: Store, candidates: Candidates, query: string, whereJoin: string, whereCond: string, scopeCond: string, fetch: number, weight: number): Promise<LexicalHit[]> {\n const matchRows = await store.lexical.query(query, { whereJoin, whereCond, scopeCond, limit: fetch });\n matchRows.forEach((r, i) => {\n candidates.set(r.path, { score: weight / (RRF_K + i), via: 'match' });\n });\n return matchRows;\n}\n\n// Personalized-PageRank expansion from the word-match seeds, folded into `candidates` at this\n// signal's weight. A no-op when there is nothing to seed from (matchRows empty), same as before\n// this was a signal.\nexport async function linksCandidates(store: Store, candidates: Candidates, matchRows: LexicalHit[], allPaths: string[], allowedPaths: Set<string>, fetch: number, weight: number): Promise<void> {\n if (matchRows.length === 0) return;\n const stmt = await store.prepare(LINK_EDGES_SQL);\n const edges = toEdges((await stmt.all()) as Array<{ src: string; dst: string }>);\n if (edges.length === 0) return;\n // Gates the label only, not the score: restart mass ranks every seed without an incident\n // edge, but dropping it from the score reweights fusion (FEVER hit@10 0.997 -> 0.907).\n const linked = new Set(edges.flat());\n const seeds = new Map(matchRows.map((r, i) => [r.path, 1 / (i + 1)]));\n const ranked = [...personalizedRank(allPaths, edges, seeds)]\n .filter(([path, score]) => score > 1e-9 && allowedPaths.has(path))\n .sort((a, b) => b[1] - a[1])\n .slice(0, fetch);\n ranked.forEach(([path], i) => {\n const existing = candidates.get(path);\n if (existing) {\n existing.score += weight / (RRF_K + i);\n if (linked.has(path)) existing.via = 'match+link';\n } else {\n candidates.set(path, { score: weight / (RRF_K + i), via: 'link' });\n }\n });\n}\n\n// Vector expansion at the swept flat-region constants (pool = fetch), folded into `candidates`\n// at this signal's weight. Each row also carries its best chunk's line range and similarity,\n// for the caller.\nexport async function vectorsCandidates(store: Store, cfg: ResolvedConfig, candidates: Candidates, terms: string, fetch: number, allowedPaths: Set<string>, weight: number): Promise<{ chunkLines: Map<string, string>; chunkSimilarity: Map<string, number> }> {\n const chunkLines = new Map<string, string>();\n const chunkSimilarity = new Map<string, number>();\n const vec = await semanticCandidates(store, cfg, terms, fetch, allowedPaths);\n vec.forEach(({ path, lines, similarity }, i) => {\n chunkLines.set(path, lines);\n chunkSimilarity.set(path, similarity);\n const existing = candidates.get(path);\n if (existing) {\n existing.score += weight / (RRF_K + i);\n existing.via = `${existing.via}+vector`;\n } else {\n candidates.set(path, { score: weight / (RRF_K + i), via: 'vector' });\n }\n });\n return { chunkLines, chunkSimilarity };\n}\n"],"names":["linksCandidates","vectorsCandidates","wordsCandidates","RRF_K","store","candidates","query","whereJoin","whereCond","scopeCond","fetch","weight","matchRows","lexical","limit","forEach","r","i","set","path","score","via","allPaths","allowedPaths","stmt","edges","linked","seeds","ranked","length","prepare","LINK_EDGES_SQL","all","toEdges","Set","flat","Map","map","personalizedRank","filter","has","sort","a","b","slice","existing","get","cfg","terms","chunkLines","chunkSimilarity","vec","semanticCandidates","lines","similarity"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { DatabaseSync } from 'node:sqlite';
|
|
2
1
|
import type { ResolvedConfig, SignalWeights } from '../config/index.js';
|
|
2
|
+
import type { Store } from '../store/types.js';
|
|
3
3
|
export interface PresetCoverage {
|
|
4
4
|
name: string;
|
|
5
5
|
files: number;
|
|
6
6
|
embedded: number;
|
|
7
7
|
signals: SignalWeights;
|
|
8
8
|
}
|
|
9
|
-
export declare function presetCoverage(
|
|
9
|
+
export declare function presetCoverage(store: Store, cfg: ResolvedConfig): Promise<PresetCoverage[]>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { DatabaseSync } from 'node:sqlite';
|
|
2
1
|
import type { ResolvedConfig, SignalWeights } from '../config/index.js';
|
|
2
|
+
import type { Store } from '../store/types.js';
|
|
3
3
|
export interface PresetCoverage {
|
|
4
4
|
name: string;
|
|
5
5
|
files: number;
|
|
6
6
|
embedded: number;
|
|
7
7
|
signals: SignalWeights;
|
|
8
8
|
}
|
|
9
|
-
export declare function presetCoverage(
|
|
9
|
+
export declare function presetCoverage(store: Store, cfg: ResolvedConfig): Promise<PresetCoverage[]>;
|
|
@@ -9,17 +9,254 @@ Object.defineProperty(exports, "presetCoverage", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _indexts = require("../config/index.js");
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var
|
|
16
|
-
|
|
12
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
13
|
+
try {
|
|
14
|
+
var info = gen[key](arg);
|
|
15
|
+
var value = info.value;
|
|
16
|
+
} catch (error) {
|
|
17
|
+
reject(error);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (info.done) resolve(value);
|
|
21
|
+
else Promise.resolve(value).then(_next, _throw);
|
|
22
|
+
}
|
|
23
|
+
function _async_to_generator(fn) {
|
|
24
|
+
return function() {
|
|
25
|
+
var self = this, args = arguments;
|
|
26
|
+
return new Promise(function(resolve, reject) {
|
|
27
|
+
var gen = fn.apply(self, args);
|
|
28
|
+
function _next(value) {
|
|
29
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
30
|
+
}
|
|
31
|
+
function _throw(err) {
|
|
32
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
33
|
+
}
|
|
34
|
+
_next(undefined);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function _ts_generator(thisArg, body) {
|
|
39
|
+
var f, y, t, _ = {
|
|
40
|
+
label: 0,
|
|
41
|
+
sent: function() {
|
|
42
|
+
if (t[0] & 1) throw t[1];
|
|
43
|
+
return t[1];
|
|
44
|
+
},
|
|
45
|
+
trys: [],
|
|
46
|
+
ops: []
|
|
47
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
48
|
+
return d(g, "next", {
|
|
49
|
+
value: verb(0)
|
|
50
|
+
}), d(g, "throw", {
|
|
51
|
+
value: verb(1)
|
|
52
|
+
}), d(g, "return", {
|
|
53
|
+
value: verb(2)
|
|
54
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
55
|
+
value: function() {
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
}), g;
|
|
59
|
+
function verb(n) {
|
|
60
|
+
return function(v) {
|
|
61
|
+
return step([
|
|
62
|
+
n,
|
|
63
|
+
v
|
|
64
|
+
]);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function step(op) {
|
|
68
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
69
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
70
|
+
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;
|
|
71
|
+
if (y = 0, t) op = [
|
|
72
|
+
op[0] & 2,
|
|
73
|
+
t.value
|
|
74
|
+
];
|
|
75
|
+
switch(op[0]){
|
|
76
|
+
case 0:
|
|
77
|
+
case 1:
|
|
78
|
+
t = op;
|
|
79
|
+
break;
|
|
80
|
+
case 4:
|
|
81
|
+
_.label++;
|
|
82
|
+
return {
|
|
83
|
+
value: op[1],
|
|
84
|
+
done: false
|
|
85
|
+
};
|
|
86
|
+
case 5:
|
|
87
|
+
_.label++;
|
|
88
|
+
y = op[1];
|
|
89
|
+
op = [
|
|
90
|
+
0
|
|
91
|
+
];
|
|
92
|
+
continue;
|
|
93
|
+
case 7:
|
|
94
|
+
op = _.ops.pop();
|
|
95
|
+
_.trys.pop();
|
|
96
|
+
continue;
|
|
97
|
+
default:
|
|
98
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
99
|
+
_ = 0;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
103
|
+
_.label = op[1];
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
107
|
+
_.label = t[1];
|
|
108
|
+
t = op;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
if (t && _.label < t[2]) {
|
|
112
|
+
_.label = t[2];
|
|
113
|
+
_.ops.push(op);
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
if (t[2]) _.ops.pop();
|
|
117
|
+
_.trys.pop();
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
op = body.call(thisArg, _);
|
|
121
|
+
} catch (e) {
|
|
122
|
+
op = [
|
|
123
|
+
6,
|
|
124
|
+
e
|
|
125
|
+
];
|
|
126
|
+
y = 0;
|
|
127
|
+
} finally{
|
|
128
|
+
f = t = 0;
|
|
129
|
+
}
|
|
130
|
+
if (op[0] & 5) throw op[1];
|
|
17
131
|
return {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
embedded: embedded,
|
|
21
|
-
signals: (0, _indexts.presetSignals)(cfg, name)
|
|
132
|
+
value: op[0] ? op[1] : void 0,
|
|
133
|
+
done: true
|
|
22
134
|
};
|
|
23
|
-
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function presetCoverage(store, cfg) {
|
|
138
|
+
return _async_to_generator(function() {
|
|
139
|
+
var embedActive, filesStmt, embeddedStmt, _tmp, rows, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, name, files, embedded, _tmp1, err;
|
|
140
|
+
return _ts_generator(this, function(_state) {
|
|
141
|
+
switch(_state.label){
|
|
142
|
+
case 0:
|
|
143
|
+
embedActive = (0, _indexts.anyPresetEmbeds)(cfg);
|
|
144
|
+
return [
|
|
145
|
+
4,
|
|
146
|
+
store.prepare('SELECT COUNT(*) AS n FROM preset_files WHERE preset = ?')
|
|
147
|
+
];
|
|
148
|
+
case 1:
|
|
149
|
+
filesStmt = _state.sent();
|
|
150
|
+
if (!embedActive) return [
|
|
151
|
+
3,
|
|
152
|
+
3
|
|
153
|
+
];
|
|
154
|
+
return [
|
|
155
|
+
4,
|
|
156
|
+
store.prepare('SELECT COUNT(*) AS n FROM preset_files pf WHERE pf.preset = ? AND EXISTS (SELECT 1 FROM embeddings e WHERE e."path" = pf."path" AND e.vector IS NOT NULL)')
|
|
157
|
+
];
|
|
158
|
+
case 2:
|
|
159
|
+
_tmp = _state.sent();
|
|
160
|
+
return [
|
|
161
|
+
3,
|
|
162
|
+
4
|
|
163
|
+
];
|
|
164
|
+
case 3:
|
|
165
|
+
_tmp = null;
|
|
166
|
+
_state.label = 4;
|
|
167
|
+
case 4:
|
|
168
|
+
embeddedStmt = _tmp;
|
|
169
|
+
// Sequential, not Promise.all: both statements are reused across presets, and a store's
|
|
170
|
+
// prepared statement is not safe to bind/run concurrently with itself.
|
|
171
|
+
rows = [];
|
|
172
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
173
|
+
_state.label = 5;
|
|
174
|
+
case 5:
|
|
175
|
+
_state.trys.push([
|
|
176
|
+
5,
|
|
177
|
+
13,
|
|
178
|
+
14,
|
|
179
|
+
15
|
|
180
|
+
]);
|
|
181
|
+
_iterator = (0, _indexts.presetNames)(cfg)[Symbol.iterator]();
|
|
182
|
+
_state.label = 6;
|
|
183
|
+
case 6:
|
|
184
|
+
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
185
|
+
3,
|
|
186
|
+
12
|
|
187
|
+
];
|
|
188
|
+
name = _step.value;
|
|
189
|
+
return [
|
|
190
|
+
4,
|
|
191
|
+
filesStmt.get(name)
|
|
192
|
+
];
|
|
193
|
+
case 7:
|
|
194
|
+
files = _state.sent().n;
|
|
195
|
+
if (!embeddedStmt) return [
|
|
196
|
+
3,
|
|
197
|
+
9
|
|
198
|
+
];
|
|
199
|
+
return [
|
|
200
|
+
4,
|
|
201
|
+
embeddedStmt.get(name)
|
|
202
|
+
];
|
|
203
|
+
case 8:
|
|
204
|
+
_tmp1 = _state.sent().n;
|
|
205
|
+
return [
|
|
206
|
+
3,
|
|
207
|
+
10
|
|
208
|
+
];
|
|
209
|
+
case 9:
|
|
210
|
+
_tmp1 = 0;
|
|
211
|
+
_state.label = 10;
|
|
212
|
+
case 10:
|
|
213
|
+
embedded = _tmp1;
|
|
214
|
+
rows.push({
|
|
215
|
+
name: name,
|
|
216
|
+
files: files,
|
|
217
|
+
embedded: embedded,
|
|
218
|
+
signals: (0, _indexts.presetSignals)(cfg, name)
|
|
219
|
+
});
|
|
220
|
+
_state.label = 11;
|
|
221
|
+
case 11:
|
|
222
|
+
_iteratorNormalCompletion = true;
|
|
223
|
+
return [
|
|
224
|
+
3,
|
|
225
|
+
6
|
|
226
|
+
];
|
|
227
|
+
case 12:
|
|
228
|
+
return [
|
|
229
|
+
3,
|
|
230
|
+
15
|
|
231
|
+
];
|
|
232
|
+
case 13:
|
|
233
|
+
err = _state.sent();
|
|
234
|
+
_didIteratorError = true;
|
|
235
|
+
_iteratorError = err;
|
|
236
|
+
return [
|
|
237
|
+
3,
|
|
238
|
+
15
|
|
239
|
+
];
|
|
240
|
+
case 14:
|
|
241
|
+
try {
|
|
242
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
243
|
+
_iterator.return();
|
|
244
|
+
}
|
|
245
|
+
} finally{
|
|
246
|
+
if (_didIteratorError) {
|
|
247
|
+
throw _iteratorError;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return [
|
|
251
|
+
7
|
|
252
|
+
];
|
|
253
|
+
case 15:
|
|
254
|
+
return [
|
|
255
|
+
2,
|
|
256
|
+
rows
|
|
257
|
+
];
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
})();
|
|
24
261
|
}
|
|
25
262
|
/* 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; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/commands/status.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/commands/status.ts"],"sourcesContent":["import type { ResolvedConfig, SignalWeights } from '../config/index.ts';\nimport { anyPresetEmbeds, presetNames, presetSignals } from '../config/index.ts';\nimport type { Store } from '../store/types.ts';\n\nexport interface PresetCoverage {\n name: string;\n files: number;\n embedded: number;\n // Reported so 0 embedded reads as \"this scope declined vectors\" rather than \"not yet built\".\n signals: SignalWeights;\n}\n\n// Indexing derives from presets, so the derivation stays visible. Read from preset_files, not\n// recomputed from globs, so it reflects the cache rather than the config.\nexport async function presetCoverage(store: Store, cfg: ResolvedConfig): Promise<PresetCoverage[]> {\n const embedActive = anyPresetEmbeds(cfg);\n const filesStmt = await store.prepare('SELECT COUNT(*) AS n FROM preset_files WHERE preset = ?');\n const embeddedStmt = embedActive ? await store.prepare('SELECT COUNT(*) AS n FROM preset_files pf WHERE pf.preset = ? AND EXISTS (SELECT 1 FROM embeddings e WHERE e.\"path\" = pf.\"path\" AND e.vector IS NOT NULL)') : null;\n // Sequential, not Promise.all: both statements are reused across presets, and a store's\n // prepared statement is not safe to bind/run concurrently with itself.\n const rows: PresetCoverage[] = [];\n for (const name of presetNames(cfg)) {\n const files = ((await filesStmt.get(name)) as { n: number }).n;\n const embedded = embeddedStmt ? ((await embeddedStmt.get(name)) as { n: number }).n : 0;\n rows.push({ name, files, embedded, signals: presetSignals(cfg, name) });\n }\n return rows;\n}\n"],"names":["presetCoverage","store","cfg","embedActive","filesStmt","embeddedStmt","rows","name","files","embedded","anyPresetEmbeds","prepare","presetNames","get","n","push","signals","presetSignals"],"mappings":";;;;+BAcsBA;;;eAAAA;;;uBAbsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAarD,SAAeA,eAAeC,KAAY,EAAEC,GAAmB;;YAC9DC,aACAC,WACAC,oBAGAC,MACD,2BAAA,mBAAA,gBAAA,WAAA,OAAMC,MACHC,OACAC;;;;oBARFN,cAAcO,IAAAA,wBAAe,EAACR;oBAClB;;wBAAMD,MAAMU,OAAO,CAAC;;;oBAAhCP,YAAY;yBACGD,aAAAA;;;;oBAAc;;wBAAMF,MAAMU,OAAO,CAAC;;;2BAApB;;;;;;2BAAmL;;;oBAAhNN;oBACN,wFAAwF;oBACxF,uEAAuE;oBACjEC;oBACD,kCAAA,2BAAA;;;;;;;;;oBAAA,YAAcM,IAAAA,oBAAW,EAACV;;;2BAA1B,6BAAA,QAAA;;;;oBAAMK,OAAN;oBACa;;wBAAMH,UAAUS,GAAG,CAACN;;;oBAA9BC,QAAQ,AAAE,cAA6CM,CAAC;yBAC7CT,cAAAA;;;;oBAAiB;;wBAAMA,aAAaQ,GAAG,CAACN;;;4BAAzB,AAAE,cAAgDO,CAAC;;;;;;4BAAG;;;oBAAhFL;oBACNH,KAAKS,IAAI,CAAC;wBAAER,MAAAA;wBAAMC,OAAAA;wBAAOC,UAAAA;wBAAUO,SAASC,IAAAA,sBAAa,EAACf,KAAKK;oBAAM;;;oBAHlE;;;;;;;;;;;;oBAAA;oBAAA;;;;;;;6BAAA,6BAAA;4BAAA;;;4BAAA;kCAAA;;;;;;;oBAKL;;wBAAOD;;;;IACT"}
|
|
@@ -2,6 +2,7 @@ import type { Feature } from '../features/types.js';
|
|
|
2
2
|
import type { SignalName, SignalWeights } from './signals.js';
|
|
3
3
|
import { type Config, type FeatureName } from './types.js';
|
|
4
4
|
export declare function presetNames(cfg: Config): string[];
|
|
5
|
+
export declare function storeName(cfg: Config): 'sqlite' | 'duckdb';
|
|
5
6
|
export declare function embedEnabled(cfg: Config): boolean;
|
|
6
7
|
export declare function presetSignals(cfg: Config, name: string): SignalWeights;
|
|
7
8
|
export declare function presetHasSignal(cfg: Config, name: string, signal: SignalName): boolean;
|
|
@@ -2,6 +2,7 @@ import type { Feature } from '../features/types.js';
|
|
|
2
2
|
import type { SignalName, SignalWeights } from './signals.js';
|
|
3
3
|
import { type Config, type FeatureName } from './types.js';
|
|
4
4
|
export declare function presetNames(cfg: Config): string[];
|
|
5
|
+
export declare function storeName(cfg: Config): 'sqlite' | 'duckdb';
|
|
5
6
|
export declare function embedEnabled(cfg: Config): boolean;
|
|
6
7
|
export declare function presetSignals(cfg: Config, name: string): SignalWeights;
|
|
7
8
|
export declare function presetHasSignal(cfg: Config, name: string, signal: SignalName): boolean;
|
|
@@ -41,6 +41,9 @@ _export(exports, {
|
|
|
41
41
|
},
|
|
42
42
|
get presetSignals () {
|
|
43
43
|
return presetSignals;
|
|
44
|
+
},
|
|
45
|
+
get storeName () {
|
|
46
|
+
return storeName;
|
|
44
47
|
}
|
|
45
48
|
});
|
|
46
49
|
var _typests = require("./types.js");
|
|
@@ -74,6 +77,10 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
74
77
|
function presetNames(cfg) {
|
|
75
78
|
return Object.keys(cfg.presets);
|
|
76
79
|
}
|
|
80
|
+
function storeName(cfg) {
|
|
81
|
+
var _cfg_store;
|
|
82
|
+
return (_cfg_store = cfg.store) !== null && _cfg_store !== void 0 ? _cfg_store : 'sqlite';
|
|
83
|
+
}
|
|
77
84
|
function embedEnabled(cfg) {
|
|
78
85
|
var _cfg_embed;
|
|
79
86
|
return typeof ((_cfg_embed = cfg.embed) === null || _cfg_embed === void 0 ? void 0 : _cfg_embed.model) === 'string' && cfg.embed.model.length > 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/config/access.ts"],"sourcesContent":["import type { Feature } from '../features/types.ts';\nimport type { SignalName, SignalWeights } from './signals.ts';\nimport { type Config, type EmbedConfig, FEATURE_NAMES, type FeatureName } from './types.ts';\n\nexport function presetNames(cfg: Config): string[] {\n return Object.keys(cfg.presets);\n}\n\n// Whether the tree names a model at all.\nexport function embedEnabled(cfg: Config): boolean {\n return typeof cfg.embed?.model === 'string' && cfg.embed.model.length > 0;\n}\n\n// A preset's effective signal weights: declared exhaustively when `signals` is present;\n// otherwise every signal whose prerequisite holds, each at weight 1 -- words always, links when\n// the feature is on, vectors when the tree names a model. Single source search() and status/map\n// read.\nexport function presetSignals(cfg: Config, name: string): SignalWeights {\n const declared = cfg.presets[name]?.signals;\n if (declared) return declared;\n const signals: SignalWeights = { words: 1 };\n if (cfg.features?.links !== false) signals.links = 1;\n if (embedEnabled(cfg)) signals.vectors = 1;\n return signals;\n}\n\nexport function presetHasSignal(cfg: Config, name: string, signal: SignalName): boolean {\n return presetSignals(cfg, name)[signal] !== undefined;\n}\n\n// Whether embedding needs to run: a model is named AND some preset's effective signals include vectors.\nexport function anyPresetEmbeds(cfg: Config): boolean {\n return presetNames(cfg).some((name) => presetHasSignal(cfg, name, 'vectors'));\n}\n\n// Opt-out features (default on): absent block or key means enabled. `rank` additionally\n// requires `links`. `embed` is derived, not a features-block member: on iff some preset's\n// effective signals include vectors.\nexport function featureEnabled(cfg: Config, name: FeatureName): boolean {\n if (name === 'embed') return anyPresetEmbeds(cfg);\n const enabled = cfg.features?.[name] !== false;\n if (name === 'rank') return enabled && featureEnabled(cfg, 'links');\n return enabled;\n}\n\nexport function enabledFeatures(cfg: Config): FeatureName[] {\n return FEATURE_NAMES.filter((name) => featureEnabled(cfg, name));\n}\n\n// Feature states, so \"off\" and \"empty\" stay distinguishable in output. `embed` is excluded:\n// it is not a features-block toggle, and `status` reports it on its own line.\nexport function featureStates(cfg: Config): { on: FeatureName[]; off: FeatureName[] } {\n const reported = FEATURE_NAMES.filter((name) => name !== 'embed');\n return {\n on: reported.filter((name) => featureEnabled(cfg, name)),\n off: reported.filter((name) => !featureEnabled(cfg, name)),\n };\n}\n\n// Resolved embed provider settings, or null when the config names no model. There is no\n// fallback to DEFAULT_EMBED_MODEL: that constant is a template `init` and the v4 migration\n// write into the file, never an implicit runtime default.\nexport function embedConfig(cfg: Config): { model: string; provider: 'static' | 'openai' | 'cohere'; url?: string; key?: string; languages?: string[]; chunkTokens?: number } | null {\n if (!embedEnabled(cfg)) return null;\n const e = cfg.embed as EmbedConfig;\n return { model: e.model as string, provider: e.provider ?? 'static', url: e.url, key: e.key, languages: e.languages, chunkTokens: e.chunkTokens };\n}\n\n// The configured FTS5 tokenizer, or undefined for the built-in default. Undefined rather than\n// the default string so featureSignature can leave the segment off entirely for trees that\n// never set it, which is what keeps existing indexes from rebuilding on upgrade.\nexport function contentTokenize(cfg: Config): string | undefined {\n const tokenize = cfg.content?.tokenize;\n return tokenize === undefined || tokenize.trim() === '' ? undefined : tokenize.trim();\n}\n\n// Cache key over everything indexing derives from, so any change to those inputs rebuilds.\n// Segment order is fixed (features list, then `features` in registry order, then tokenize, then presets) since reordering alone would fire a spurious rebuild; tokenize/presets stay here because no Feature module owns either.\nexport function featureSignature(cfg: Config, features: Feature[]): string {\n const globalPart = enabledFeatures(cfg)\n .filter((name) => name !== 'embed')\n .join(',');\n const featureParts = features.map((feature) => feature.signature?.(cfg)).filter((part): part is string => part !== undefined);\n // One keyed segment per preset so a rebuild notice can name exactly which preset moved.\n const presetsPart = [...presetNames(cfg)]\n .sort()\n .map((name) => {\n const p = cfg.presets[name];\n const include = [...p.include].sort().join('+');\n const exclude = [...(p.exclude ?? [])].sort().join('+');\n return `preset:${name}:${include}:${exclude}:${presetHasSignal(cfg, name, 'vectors') ? 'on' : 'off'}`;\n })\n .join('|');\n const tokenize = contentTokenize(cfg);\n const parts = [`features:${globalPart}`, ...featureParts];\n if (tokenize !== undefined) parts.push(`tokenize:${tokenize}`);\n parts.push(presetsPart);\n return parts.join('|');\n}\n"],"names":["anyPresetEmbeds","contentTokenize","embedConfig","embedEnabled","enabledFeatures","featureEnabled","featureSignature","featureStates","presetHasSignal","presetNames","presetSignals","cfg","Object","keys","presets","embed","model","length","name","declared","signals","words","features","links","vectors","signal","undefined","some","enabled","FEATURE_NAMES","filter","reported","on","off","e","provider","url","key","languages","chunkTokens","tokenize","content","trim","globalPart","join","featureParts","map","feature","signature","part","presetsPart","sort","p","include","exclude","parts","push"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/config/access.ts"],"sourcesContent":["import type { Feature } from '../features/types.ts';\nimport type { SignalName, SignalWeights } from './signals.ts';\nimport { type Config, type EmbedConfig, FEATURE_NAMES, type FeatureName } from './types.ts';\n\nexport function presetNames(cfg: Config): string[] {\n return Object.keys(cfg.presets);\n}\n\n// The backing store engine this tree uses; absent means the default.\nexport function storeName(cfg: Config): 'sqlite' | 'duckdb' {\n return cfg.store ?? 'sqlite';\n}\n\n// Whether the tree names a model at all.\nexport function embedEnabled(cfg: Config): boolean {\n return typeof cfg.embed?.model === 'string' && cfg.embed.model.length > 0;\n}\n\n// A preset's effective signal weights: declared exhaustively when `signals` is present;\n// otherwise every signal whose prerequisite holds, each at weight 1 -- words always, links when\n// the feature is on, vectors when the tree names a model. Single source search() and status/map\n// read.\nexport function presetSignals(cfg: Config, name: string): SignalWeights {\n const declared = cfg.presets[name]?.signals;\n if (declared) return declared;\n const signals: SignalWeights = { words: 1 };\n if (cfg.features?.links !== false) signals.links = 1;\n if (embedEnabled(cfg)) signals.vectors = 1;\n return signals;\n}\n\nexport function presetHasSignal(cfg: Config, name: string, signal: SignalName): boolean {\n return presetSignals(cfg, name)[signal] !== undefined;\n}\n\n// Whether embedding needs to run: a model is named AND some preset's effective signals include vectors.\nexport function anyPresetEmbeds(cfg: Config): boolean {\n return presetNames(cfg).some((name) => presetHasSignal(cfg, name, 'vectors'));\n}\n\n// Opt-out features (default on): absent block or key means enabled. `rank` additionally\n// requires `links`. `embed` is derived, not a features-block member: on iff some preset's\n// effective signals include vectors.\nexport function featureEnabled(cfg: Config, name: FeatureName): boolean {\n if (name === 'embed') return anyPresetEmbeds(cfg);\n const enabled = cfg.features?.[name] !== false;\n if (name === 'rank') return enabled && featureEnabled(cfg, 'links');\n return enabled;\n}\n\nexport function enabledFeatures(cfg: Config): FeatureName[] {\n return FEATURE_NAMES.filter((name) => featureEnabled(cfg, name));\n}\n\n// Feature states, so \"off\" and \"empty\" stay distinguishable in output. `embed` is excluded:\n// it is not a features-block toggle, and `status` reports it on its own line.\nexport function featureStates(cfg: Config): { on: FeatureName[]; off: FeatureName[] } {\n const reported = FEATURE_NAMES.filter((name) => name !== 'embed');\n return {\n on: reported.filter((name) => featureEnabled(cfg, name)),\n off: reported.filter((name) => !featureEnabled(cfg, name)),\n };\n}\n\n// Resolved embed provider settings, or null when the config names no model. There is no\n// fallback to DEFAULT_EMBED_MODEL: that constant is a template `init` and the v4 migration\n// write into the file, never an implicit runtime default.\nexport function embedConfig(cfg: Config): { model: string; provider: 'static' | 'openai' | 'cohere'; url?: string; key?: string; languages?: string[]; chunkTokens?: number } | null {\n if (!embedEnabled(cfg)) return null;\n const e = cfg.embed as EmbedConfig;\n return { model: e.model as string, provider: e.provider ?? 'static', url: e.url, key: e.key, languages: e.languages, chunkTokens: e.chunkTokens };\n}\n\n// The configured FTS5 tokenizer, or undefined for the built-in default. Undefined rather than\n// the default string so featureSignature can leave the segment off entirely for trees that\n// never set it, which is what keeps existing indexes from rebuilding on upgrade.\nexport function contentTokenize(cfg: Config): string | undefined {\n const tokenize = cfg.content?.tokenize;\n return tokenize === undefined || tokenize.trim() === '' ? undefined : tokenize.trim();\n}\n\n// Cache key over everything indexing derives from, so any change to those inputs rebuilds.\n// Segment order is fixed (features list, then `features` in registry order, then tokenize, then presets) since reordering alone would fire a spurious rebuild; tokenize/presets stay here because no Feature module owns either.\nexport function featureSignature(cfg: Config, features: Feature[]): string {\n const globalPart = enabledFeatures(cfg)\n .filter((name) => name !== 'embed')\n .join(',');\n const featureParts = features.map((feature) => feature.signature?.(cfg)).filter((part): part is string => part !== undefined);\n // One keyed segment per preset so a rebuild notice can name exactly which preset moved.\n const presetsPart = [...presetNames(cfg)]\n .sort()\n .map((name) => {\n const p = cfg.presets[name];\n const include = [...p.include].sort().join('+');\n const exclude = [...(p.exclude ?? [])].sort().join('+');\n return `preset:${name}:${include}:${exclude}:${presetHasSignal(cfg, name, 'vectors') ? 'on' : 'off'}`;\n })\n .join('|');\n const tokenize = contentTokenize(cfg);\n const parts = [`features:${globalPart}`, ...featureParts];\n if (tokenize !== undefined) parts.push(`tokenize:${tokenize}`);\n parts.push(presetsPart);\n return parts.join('|');\n}\n"],"names":["anyPresetEmbeds","contentTokenize","embedConfig","embedEnabled","enabledFeatures","featureEnabled","featureSignature","featureStates","presetHasSignal","presetNames","presetSignals","storeName","cfg","Object","keys","presets","store","embed","model","length","name","declared","signals","words","features","links","vectors","signal","undefined","some","enabled","FEATURE_NAMES","filter","reported","on","off","e","provider","url","key","languages","chunkTokens","tokenize","content","trim","globalPart","join","featureParts","map","feature","signature","part","presetsPart","sort","p","include","exclude","parts","push"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { anyPresetEmbeds, contentTokenize, embedConfig, embedEnabled, enabledFeatures, featureEnabled, featureSignature, featureStates, presetHasSignal, presetNames, presetSignals } from './access.js';
|
|
1
|
+
export { anyPresetEmbeds, contentTokenize, embedConfig, embedEnabled, enabledFeatures, featureEnabled, featureSignature, featureStates, presetHasSignal, presetNames, presetSignals, storeName } from './access.js';
|
|
2
2
|
export type { InitOverrides } from './load.js';
|
|
3
3
|
export { findConfigPath, initConfig, loadConfig, migrateConfig } from './load.js';
|
|
4
4
|
export { resolvePreset, resolveSearch } from './resolve.js';
|