sensemaking 0.27.0 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/chunk/extract.js.map +1 -1
- package/dist/cjs/chunk/group.js.map +1 -1
- package/dist/cjs/chunk/index.js.map +1 -1
- package/dist/cjs/chunk/parse.js.map +1 -1
- package/dist/cjs/chunk/parser.js.map +1 -1
- package/dist/cjs/chunk/tokens.js.map +1 -1
- package/dist/cjs/chunk/version.js.map +1 -1
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/download.js.map +1 -1
- package/dist/cjs/cli/index.js.map +1 -1
- package/dist/cjs/cli/init.js.map +1 -1
- package/dist/cjs/cli/map.js.map +1 -1
- package/dist/cjs/cli/named.js.map +1 -1
- package/dist/cjs/cli/path.js.map +1 -1
- package/dist/cjs/cli/peek.js.map +1 -1
- package/dist/cjs/cli/related.js.map +1 -1
- package/dist/cjs/cli/search.js.map +1 -1
- package/dist/cjs/cli/shared.js.map +1 -1
- package/dist/cjs/cli/sql.js.map +1 -1
- package/dist/cjs/cli/status.js.map +1 -1
- package/dist/cjs/cli/watch.js.map +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/commands/index.js.map +1 -1
- package/dist/cjs/commands/map.js.map +1 -1
- package/dist/cjs/commands/path.js.map +1 -1
- package/dist/cjs/commands/peek.js.map +1 -1
- package/dist/cjs/commands/related.js.map +1 -1
- package/dist/cjs/commands/scope.js.map +1 -1
- package/dist/cjs/commands/search.js.map +1 -1
- package/dist/cjs/commands/signals.js.map +1 -1
- package/dist/cjs/commands/snapshot.js.map +1 -1
- package/dist/cjs/commands/status.js.map +1 -1
- package/dist/cjs/config/access.js.map +1 -1
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/config/load.js.map +1 -1
- package/dist/cjs/config/resolve.js.map +1 -1
- package/dist/cjs/config/signals.js.map +1 -1
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/config/validate.js.map +1 -1
- package/dist/cjs/embed/cohere.js.map +1 -1
- package/dist/cjs/embed/distribution.js.map +1 -1
- package/dist/cjs/embed/endpoint.js.map +1 -1
- package/dist/cjs/embed/handoff.js.map +1 -1
- package/dist/cjs/embed/http.js.map +1 -1
- package/dist/cjs/embed/identity.js.map +1 -1
- package/dist/cjs/embed/langfit.js.map +1 -1
- package/dist/cjs/embed/languages.js.map +1 -1
- package/dist/cjs/embed/openai.js.map +1 -1
- package/dist/cjs/embed/query.js.map +1 -1
- package/dist/cjs/embed/registry.js.map +1 -1
- package/dist/cjs/embed/static.js.map +1 -1
- package/dist/cjs/embed/store.js.map +1 -1
- package/dist/cjs/embed/types.js.map +1 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/features/embed.js.map +1 -1
- package/dist/cjs/features/fences.js.map +1 -1
- package/dist/cjs/features/index.js.map +1 -1
- package/dist/cjs/features/links.js.map +1 -1
- package/dist/cjs/features/rank.js.map +1 -1
- package/dist/cjs/features/sections.js.map +1 -1
- package/dist/cjs/features/tags.js.map +1 -1
- package/dist/cjs/graph/graph.js.map +1 -1
- package/dist/cjs/graph/traverse.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/atomic-write.js.map +1 -1
- package/dist/cjs/lib/guarded-tick.js.map +1 -1
- package/dist/cjs/lib/serial-query.js.map +1 -1
- package/dist/cjs/lib/watch-notification.js.map +1 -1
- package/dist/cjs/lib/worker-file.js.map +1 -1
- package/dist/cjs/output/column-hint.js.map +1 -1
- package/dist/cjs/output/output.js.map +1 -1
- package/dist/cjs/output/progress.js.map +1 -1
- package/dist/cjs/output/search-error.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/list.js.map +1 -1
- package/dist/cjs/scan/pool.js.map +1 -1
- package/dist/cjs/scan/reparse.js.map +1 -1
- package/dist/cjs/scan/worker-error.js.map +1 -1
- package/dist/cjs/store/batch.js.map +1 -1
- package/dist/cjs/store/builder.js.map +1 -1
- package/dist/cjs/store/cache.js.map +1 -1
- package/dist/cjs/store/duckdb/batch.js.map +1 -1
- package/dist/cjs/store/duckdb/connection.js.map +1 -1
- package/dist/cjs/store/duckdb/fieldStats.js.map +1 -1
- package/dist/cjs/store/duckdb/lexical.d.cts +1 -6
- package/dist/cjs/store/duckdb/lexical.d.ts +1 -6
- package/dist/cjs/store/duckdb/lexical.js +28 -39
- package/dist/cjs/store/duckdb/lexical.js.map +1 -1
- package/dist/cjs/store/duckdb/native.d.cts +1 -2
- package/dist/cjs/store/duckdb/native.d.ts +1 -2
- package/dist/cjs/store/duckdb/native.js +1 -6
- package/dist/cjs/store/duckdb/native.js.map +1 -1
- package/dist/cjs/store/duckdb/open.js.map +1 -1
- package/dist/cjs/store/duckdb/ordered-bm25.d.cts +3 -16
- package/dist/cjs/store/duckdb/ordered-bm25.d.ts +3 -16
- package/dist/cjs/store/duckdb/ordered-bm25.js +27 -79
- package/dist/cjs/store/duckdb/ordered-bm25.js.map +1 -1
- package/dist/cjs/store/duckdb/reconcile.js.map +1 -1
- package/dist/cjs/store/duckdb/sql-functions.js.map +1 -1
- package/dist/cjs/store/duckdb/store.js.map +1 -1
- package/dist/cjs/store/duckdb/vectors.js.map +1 -1
- package/dist/cjs/store/embed-scope.js.map +1 -1
- package/dist/cjs/store/feature-scope.js.map +1 -1
- package/dist/cjs/store/index.js.map +1 -1
- package/dist/cjs/store/lock-wait.js.map +1 -1
- package/dist/cjs/store/native.js.map +1 -1
- package/dist/cjs/store/open.js.map +1 -1
- package/dist/cjs/store/preset-scope.js.map +1 -1
- package/dist/cjs/store/readiness.js.map +1 -1
- package/dist/cjs/store/reconcile.js.map +1 -1
- package/dist/cjs/store/shared.js.map +1 -1
- package/dist/cjs/store/signature.js.map +1 -1
- package/dist/cjs/store/sql-functions.js.map +1 -1
- package/dist/cjs/store/sqlite/connection.js.map +1 -1
- package/dist/cjs/store/sqlite/fieldStats.js.map +1 -1
- package/dist/cjs/store/sqlite/lexical.js.map +1 -1
- package/dist/cjs/store/sqlite/open.js.map +1 -1
- package/dist/cjs/store/sqlite/reconcile.js.map +1 -1
- package/dist/cjs/store/sqlite/sql-functions.js.map +1 -1
- package/dist/cjs/store/sqlite/store.js.map +1 -1
- package/dist/cjs/store/sqlite/vectors.js.map +1 -1
- package/dist/cjs/store/stages.js.map +1 -1
- package/dist/cjs/store/transaction.js.map +1 -1
- package/dist/cjs/store/turso/connection.js.map +1 -1
- package/dist/cjs/store/turso/fieldStats.js.map +1 -1
- package/dist/cjs/store/turso/lexical-text.js.map +1 -1
- package/dist/cjs/store/turso/lexical.js.map +1 -1
- package/dist/cjs/store/turso/native.js.map +1 -1
- package/dist/cjs/store/turso/open.js.map +1 -1
- package/dist/cjs/store/turso/reconcile.js.map +1 -1
- package/dist/cjs/store/turso/sql-functions.js.map +1 -1
- package/dist/cjs/store/turso/store.js.map +1 -1
- package/dist/cjs/store/turso/vectors.js.map +1 -1
- package/dist/cjs/store/types.js.map +1 -1
- package/dist/cjs/store/vectors.js.map +1 -1
- package/dist/cjs/text/segment.js.map +1 -1
- package/dist/cjs/text/strip.js.map +1 -1
- package/dist/cjs/watch-claim.js.map +1 -1
- package/dist/cjs/watch.js.map +1 -1
- package/dist/cjs/workers/parse.js.map +1 -1
- package/dist/cjs/workers/watch-heartbeat.js.map +1 -1
- package/dist/esm/chunk/extract.js.map +1 -1
- package/dist/esm/chunk/group.js.map +1 -1
- package/dist/esm/chunk/index.js.map +1 -1
- package/dist/esm/chunk/parse.js.map +1 -1
- package/dist/esm/chunk/parser.js.map +1 -1
- package/dist/esm/chunk/tokens.js.map +1 -1
- package/dist/esm/chunk/types.js.map +1 -1
- package/dist/esm/chunk/version.js.map +1 -1
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/download.js.map +1 -1
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/init.js.map +1 -1
- package/dist/esm/cli/map.js.map +1 -1
- package/dist/esm/cli/named.js.map +1 -1
- package/dist/esm/cli/path.js.map +1 -1
- package/dist/esm/cli/peek.js.map +1 -1
- package/dist/esm/cli/related.js.map +1 -1
- package/dist/esm/cli/search.js.map +1 -1
- package/dist/esm/cli/shared.js.map +1 -1
- package/dist/esm/cli/sql.js.map +1 -1
- package/dist/esm/cli/status.js.map +1 -1
- package/dist/esm/cli/types.js.map +1 -1
- package/dist/esm/cli/watch.js.map +1 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/commands/index.js.map +1 -1
- package/dist/esm/commands/map.js.map +1 -1
- package/dist/esm/commands/path.js.map +1 -1
- package/dist/esm/commands/peek.js.map +1 -1
- package/dist/esm/commands/related.js.map +1 -1
- package/dist/esm/commands/scope.js.map +1 -1
- package/dist/esm/commands/search.js.map +1 -1
- package/dist/esm/commands/signals.js.map +1 -1
- package/dist/esm/commands/snapshot.js.map +1 -1
- package/dist/esm/commands/status.js.map +1 -1
- package/dist/esm/config/access.js.map +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/load.js.map +1 -1
- package/dist/esm/config/resolve.js.map +1 -1
- package/dist/esm/config/signals.js.map +1 -1
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/config/validate.js.map +1 -1
- package/dist/esm/embed/cohere.js.map +1 -1
- package/dist/esm/embed/distribution.js.map +1 -1
- package/dist/esm/embed/endpoint.js.map +1 -1
- package/dist/esm/embed/handoff.js.map +1 -1
- package/dist/esm/embed/http.js.map +1 -1
- package/dist/esm/embed/identity.js.map +1 -1
- package/dist/esm/embed/langfit.js.map +1 -1
- package/dist/esm/embed/languages.js.map +1 -1
- package/dist/esm/embed/openai.js.map +1 -1
- package/dist/esm/embed/query.js.map +1 -1
- package/dist/esm/embed/registry.js.map +1 -1
- package/dist/esm/embed/static.js.map +1 -1
- package/dist/esm/embed/store.js.map +1 -1
- package/dist/esm/embed/types.js.map +1 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/features/embed.js.map +1 -1
- package/dist/esm/features/fences.js.map +1 -1
- package/dist/esm/features/index.js.map +1 -1
- package/dist/esm/features/links.js.map +1 -1
- package/dist/esm/features/rank.js.map +1 -1
- package/dist/esm/features/sections.js.map +1 -1
- package/dist/esm/features/tags.js.map +1 -1
- package/dist/esm/features/types.js.map +1 -1
- package/dist/esm/graph/graph.js.map +1 -1
- package/dist/esm/graph/traverse.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/atomic-write.js.map +1 -1
- package/dist/esm/lib/guarded-tick.js.map +1 -1
- package/dist/esm/lib/serial-query.js.map +1 -1
- package/dist/esm/lib/watch-notification.js.map +1 -1
- package/dist/esm/lib/worker-file.js.map +1 -1
- package/dist/esm/output/column-hint.js.map +1 -1
- package/dist/esm/output/output.js.map +1 -1
- package/dist/esm/output/progress.js.map +1 -1
- package/dist/esm/output/search-error.js.map +1 -1
- package/dist/esm/scan/frontmatter.js.map +1 -1
- package/dist/esm/scan/index.js.map +1 -1
- package/dist/esm/scan/list.js.map +1 -1
- package/dist/esm/scan/pool.js.map +1 -1
- package/dist/esm/scan/reparse.js.map +1 -1
- package/dist/esm/scan/worker-error.js.map +1 -1
- package/dist/esm/store/batch.js.map +1 -1
- package/dist/esm/store/builder.js.map +1 -1
- package/dist/esm/store/cache.js.map +1 -1
- package/dist/esm/store/duckdb/batch.js.map +1 -1
- package/dist/esm/store/duckdb/connection.js.map +1 -1
- package/dist/esm/store/duckdb/fieldStats.js.map +1 -1
- package/dist/esm/store/duckdb/lexical.d.ts +1 -6
- package/dist/esm/store/duckdb/lexical.js +13 -17
- package/dist/esm/store/duckdb/lexical.js.map +1 -1
- package/dist/esm/store/duckdb/native.d.ts +1 -2
- package/dist/esm/store/duckdb/native.js +1 -3
- package/dist/esm/store/duckdb/native.js.map +1 -1
- package/dist/esm/store/duckdb/open.js.map +1 -1
- package/dist/esm/store/duckdb/ordered-bm25.d.ts +3 -16
- package/dist/esm/store/duckdb/ordered-bm25.js +18 -54
- package/dist/esm/store/duckdb/ordered-bm25.js.map +1 -1
- package/dist/esm/store/duckdb/reconcile.js.map +1 -1
- package/dist/esm/store/duckdb/sql-functions.js.map +1 -1
- package/dist/esm/store/duckdb/store.js.map +1 -1
- package/dist/esm/store/duckdb/vectors.js.map +1 -1
- package/dist/esm/store/embed-scope.js.map +1 -1
- package/dist/esm/store/feature-scope.js.map +1 -1
- package/dist/esm/store/index.js.map +1 -1
- package/dist/esm/store/lock-wait.js.map +1 -1
- package/dist/esm/store/native.js.map +1 -1
- package/dist/esm/store/open.js.map +1 -1
- package/dist/esm/store/preset-scope.js.map +1 -1
- package/dist/esm/store/readiness.js.map +1 -1
- package/dist/esm/store/reconcile.js.map +1 -1
- package/dist/esm/store/shared.js.map +1 -1
- package/dist/esm/store/signature.js.map +1 -1
- package/dist/esm/store/sql-functions.js.map +1 -1
- package/dist/esm/store/sqlite/connection.js.map +1 -1
- package/dist/esm/store/sqlite/fieldStats.js.map +1 -1
- package/dist/esm/store/sqlite/lexical.js.map +1 -1
- package/dist/esm/store/sqlite/open.js.map +1 -1
- package/dist/esm/store/sqlite/reconcile.js.map +1 -1
- package/dist/esm/store/sqlite/sql-functions.js.map +1 -1
- package/dist/esm/store/sqlite/store.js.map +1 -1
- package/dist/esm/store/sqlite/vectors.js.map +1 -1
- package/dist/esm/store/stages.js.map +1 -1
- package/dist/esm/store/transaction.js.map +1 -1
- package/dist/esm/store/turso/connection.js.map +1 -1
- package/dist/esm/store/turso/fieldStats.js.map +1 -1
- package/dist/esm/store/turso/lexical-text.js.map +1 -1
- package/dist/esm/store/turso/lexical.js.map +1 -1
- package/dist/esm/store/turso/native.js.map +1 -1
- package/dist/esm/store/turso/open.js.map +1 -1
- package/dist/esm/store/turso/reconcile.js.map +1 -1
- package/dist/esm/store/turso/sql-functions.js.map +1 -1
- package/dist/esm/store/turso/store.js.map +1 -1
- package/dist/esm/store/turso/vectors.js.map +1 -1
- package/dist/esm/store/types.js.map +1 -1
- package/dist/esm/store/vectors.js.map +1 -1
- package/dist/esm/text/segment.js.map +1 -1
- package/dist/esm/text/strip.js.map +1 -1
- package/dist/esm/watch-claim.js.map +1 -1
- package/dist/esm/watch.js.map +1 -1
- package/dist/esm/workers/parse.js.map +1 -1
- package/dist/esm/workers/watch-heartbeat.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/chunk/parse.ts"],"sourcesContent":["import type { Token } from 'markdown-it';\nimport { extractText } from './extract.ts';\nimport { parser } from './parser.ts';\nimport type { Block, BlockType } from './types.ts';\n\n// Opening token type to Block type. Everything else (rules, raw html, footnote definitions) is\n// 'other', as mdast's BLOCK_TYPES mapped no entry for those nodes.\nconst BLOCK_TYPES: Record<string, BlockType> = {\n heading_open: 'heading',\n paragraph_open: 'paragraph',\n fence: 'code',\n code_block: 'code',\n table_open: 'table',\n ordered_list_open: 'list',\n bullet_list_open: 'list',\n blockquote_open: 'blockquote',\n};\n\n// Top-level blocks of a markdown body, typed and line-extent bounded from markdown-it's own\n// token maps (never a regex guess). html and linkify on, with the footnote and task-list plugins.\nexport function parse(body: string): Block[] {\n const tokens = parser().parse(body, {});\n const lines = body.split('\\n');\n const blocks: Block[] = [];\n let i = 0;\n while (i < tokens.length) {\n const token = tokens[i];\n if (token.nesting === 0) {\n blocks.push(makeBlock(BLOCK_TYPES[token.type] ?? 'other', tokens, i, i + 1, lines));\n i += 1;\n } else if (token.nesting === 1) {\n let depth = 1;\n let j = i + 1;\n while (j < tokens.length && depth > 0) {\n depth += tokens[j].nesting === 1 ? 1 : tokens[j].nesting === -1 ? -1 : 0;\n j += 1;\n }\n blocks.push(makeBlock(BLOCK_TYPES[token.type] ?? 'other', tokens, i, j, lines));\n i = j;\n } else {\n // Defensive: the balanced scan above consumes every close belonging to an open.\n i += 1;\n }\n }\n return blocks;\n}\n\n// 1-based inclusive extent from the min/max of the tokens' maps (0-based half-open); a block\n// whose tokens carry no map (an empty footnote definition) falls back to line 1. Trailing\n// blank lines trim so a list's endLine lands where mdast's position ended it.\nfunction makeBlock(type: BlockType, tokens: Token[], i: number, j: number, lines: string[]): Block {\n let start = Infinity;\n let end = 0;\n for (let k = i; k < j; k++) {\n const map = tokens[k].map;\n if (map) {\n start = Math.min(start, map[0]);\n end = Math.max(end, map[1]);\n }\n }\n const startLine = Number.isFinite(start) ? start + 1 : 1;\n let endLine = end > start ? end : startLine;\n while (endLine > startLine && lines[endLine - 1].trim() === '') endLine--;\n const block: Block = { type, startLine, endLine, node: tokens.slice(i, j) };\n if (type === 'heading') {\n block.depth = Number(tokens[i].tag.slice(1));\n block.text = extractText(block);\n }\n return block;\n}\n"],"names":["extractText","parser","BLOCK_TYPES","heading_open","paragraph_open","fence","code_block","table_open","ordered_list_open","bullet_list_open","blockquote_open","parse","body","tokens","lines","split","blocks","i","length","token","nesting","push","makeBlock","type","depth","j","start","Infinity","end","k","map","Math","min","max","startLine","Number","isFinite","endLine","trim","block","node","slice","tag","text"],"mappings":"AACA,SAASA,WAAW,QAAQ,eAAe;AAC3C,SAASC,MAAM,QAAQ,cAAc;AAGrC,+FAA+F;AAC/F,mEAAmE;AACnE,MAAMC,cAAyC;IAC7CC,cAAc;IACdC,gBAAgB;IAChBC,OAAO;IACPC,YAAY;IACZC,YAAY;IACZC,mBAAmB;IACnBC,kBAAkB;IAClBC,iBAAiB;AACnB;AAEA,4FAA4F;AAC5F,kGAAkG;AAClG,OAAO,SAASC,MAAMC,IAAY;IAChC,MAAMC,SAASZ,SAASU,KAAK,CAACC,MAAM,CAAC;IACrC,MAAME,QAAQF,KAAKG,KAAK,CAAC;IACzB,MAAMC,SAAkB,EAAE;IAC1B,IAAIC,IAAI;IACR,MAAOA,IAAIJ,OAAOK,MAAM,CAAE;QACxB,MAAMC,QAAQN,MAAM,CAACI,EAAE;QACvB,IAAIE,MAAMC,OAAO,KAAK,GAAG;gBACDlB;YAAtBc,OAAOK,IAAI,CAACC,WAAUpB,0BAAAA,WAAW,CAACiB,MAAMI,IAAI,CAAC,cAAvBrB,qCAAAA,0BAA2B,SAASW,QAAQI,GAAGA,IAAI,GAAGH;YAC5EG,KAAK;QACP,OAAO,IAAIE,MAAMC,OAAO,KAAK,GAAG;gBAORlB;YANtB,IAAIsB,QAAQ;YACZ,IAAIC,IAAIR,IAAI;YACZ,MAAOQ,IAAIZ,OAAOK,MAAM,IAAIM,QAAQ,EAAG;gBACrCA,SAASX,MAAM,CAACY,EAAE,CAACL,OAAO,KAAK,IAAI,IAAIP,MAAM,CAACY,EAAE,CAACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI;gBACvEK,KAAK;YACP;YACAT,OAAOK,IAAI,CAACC,WAAUpB,2BAAAA,WAAW,CAACiB,MAAMI,IAAI,CAAC,cAAvBrB,sCAAAA,2BAA2B,SAASW,QAAQI,GAAGQ,GAAGX;YACxEG,IAAIQ;QACN,OAAO;YACL,gFAAgF;YAChFR,KAAK;QACP;IACF;IACA,OAAOD;AACT;AAEA,6FAA6F;AAC7F,0FAA0F;AAC1F,8EAA8E;AAC9E,SAASM,UAAUC,IAAe,EAAEV,MAAe,EAAEI,CAAS,EAAEQ,CAAS,EAAEX,KAAe;IACxF,IAAIY,QAAQC;IACZ,IAAIC,MAAM;IACV,IAAK,IAAIC,IAAIZ,GAAGY,IAAIJ,GAAGI,IAAK;QAC1B,MAAMC,MAAMjB,MAAM,CAACgB,EAAE,CAACC,GAAG;QACzB,IAAIA,KAAK;YACPJ,QAAQK,KAAKC,GAAG,CAACN,OAAOI,GAAG,CAAC,EAAE;YAC9BF,MAAMG,KAAKE,GAAG,CAACL,KAAKE,GAAG,CAAC,EAAE;QAC5B;IACF;IACA,MAAMI,YAAYC,OAAOC,QAAQ,CAACV,SAASA,QAAQ,IAAI;IACvD,IAAIW,UAAUT,MAAMF,QAAQE,MAAMM;IAClC,MAAOG,UAAUH,aAAapB,KAAK,CAACuB,UAAU,EAAE,CAACC,IAAI,OAAO,GAAID;IAChE,MAAME,QAAe;QAAEhB;QAAMW;QAAWG;QAASG,MAAM3B,OAAO4B,KAAK,CAACxB,GAAGQ;IAAG;IAC1E,IAAIF,SAAS,WAAW;QACtBgB,MAAMf,KAAK,GAAGW,OAAOtB,MAAM,CAACI,EAAE,CAACyB,GAAG,CAACD,KAAK,CAAC;QACzCF,MAAMI,IAAI,GAAG3C,YAAYuC;IAC3B;IACA,OAAOA;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/chunk/parser.ts"],"sourcesContent":["import Module from 'node:module';\nimport type { MarkdownIt } from 'markdown-it';\nimport type footnotePlugin from 'markdown-it-footnote';\nimport type taskListsPlugin from 'markdown-it-task-lists';\n\n// Tier-2, as embed/static.ts: the parser's packages cost ~19 ms to load and a warm tree never\n// parses, so every store-opening command paid for them until a file actually changed.\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// The CJS build resolves markdown-it's export= types, so the constructor is named locally.\ntype Ctor = new (options?: { html?: boolean; linkify?: boolean }) => MarkdownIt;\n\nlet cached: MarkdownIt | undefined;\n\n// The one shared parser: html and linkify on, fuzzy links, footnotes and task lists, with the\n// footnote rules disabled for GFM parity (definitions stay spans; ^[...] stays inert text).\nexport function parser(): MarkdownIt {\n if (cached) return cached;\n const Ctor = _require('markdown-it') as Ctor;\n const footnote = _require('markdown-it-footnote') as typeof footnotePlugin;\n const taskLists = _require('markdown-it-task-lists') as typeof taskListsPlugin;\n const md = new Ctor({ html: true, linkify: true }).use(footnote).use(taskLists);\n // Fuzzy linking is what links www. domains and emails (the scheme matcher does neither); its\n // bare-domain over-matching vs GFM is reined in at extraction, where the text is kept.\n md.linkify.set({ fuzzyLink: true });\n md.core.ruler.disable('footnote_tail');\n md.inline.ruler.disable('footnote_inline');\n cached = md;\n return cached;\n}\n"],"names":["Module","_require","require","createRequire","url","cached","parser","Ctor","footnote","taskLists","md","html","linkify","use","set","fuzzyLink","core","ruler","disable","inline"],"mappings":"AAAA,OAAOA,YAAY,cAAc;AAKjC,8FAA8F;AAC9F,sFAAsF;AACtF,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAK1F,IAAIG;AAEJ,8FAA8F;AAC9F,4FAA4F;AAC5F,OAAO,SAASC;IACd,IAAID,QAAQ,OAAOA;IACnB,MAAME,OAAON,SAAS;IACtB,MAAMO,WAAWP,SAAS;IAC1B,MAAMQ,YAAYR,SAAS;IAC3B,MAAMS,KAAK,IAAIH,KAAK;QAAEI,MAAM;QAAMC,SAAS;IAAK,GAAGC,GAAG,CAACL,UAAUK,GAAG,CAACJ;IACrE,6FAA6F;IAC7F,uFAAuF;IACvFC,GAAGE,OAAO,CAACE,GAAG,CAAC;QAAEC,WAAW;IAAK;IACjCL,GAAGM,IAAI,CAACC,KAAK,CAACC,OAAO,CAAC;IACtBR,GAAGS,MAAM,CAACF,KAAK,CAACC,OAAO,CAAC;IACxBb,SAASK;IACT,OAAOL;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/chunk/tokens.ts"],"sourcesContent":["import { UNSPACED_SCRIPTS } from '../text/segment.ts';\n\nexport const DEFAULT_TARGET_TOKENS = 500;\n\n// D5: segment.ts's unspaced-script set packs close to one token per character; Hangul is\n// spaced but still token-dense and sits in this set as a conservative bound (one Unicode set, one home).\nconst DENSE_SCRIPT = new RegExp(`[${UNSPACED_SCRIPTS}\\\\p{scx=Hangul}]`, 'u');\n\n// D5's size estimate: dense-script graphemes 1:1, everything else at 4 chars/token.\nexport function estimateTokens(text: string): number {\n let dense = 0;\n let other = 0;\n for (const ch of text) {\n if (DENSE_SCRIPT.test(ch)) dense++;\n else other++;\n }\n return dense + other / 4;\n}\n"],"names":["UNSPACED_SCRIPTS","DEFAULT_TARGET_TOKENS","DENSE_SCRIPT","RegExp","estimateTokens","text","dense","other","ch","test"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,qBAAqB;AAEtD,OAAO,MAAMC,wBAAwB,IAAI;AAEzC,yFAAyF;AACzF,yGAAyG;AACzG,MAAMC,eAAe,IAAIC,OAAO,CAAC,CAAC,EAAEH,iBAAiB,gBAAgB,CAAC,EAAE;AAExE,oFAAoF;AACpF,OAAO,SAASI,eAAeC,IAAY;IACzC,IAAIC,QAAQ;IACZ,IAAIC,QAAQ;IACZ,KAAK,MAAMC,MAAMH,KAAM;QACrB,IAAIH,aAAaO,IAAI,CAACD,KAAKF;aACtBC;IACP;IACA,OAAOD,QAAQC,QAAQ;AACzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/chunk/types.ts"],"sourcesContent":["import type { Token } from 'markdown-it';\n\nexport type BlockType = 'heading' | 'paragraph' | 'code' | 'table' | 'list' | 'blockquote' | 'other';\n\n// One top-level markdown-it block plus its 1-indexed source line extent, heading depth/text if any.\n// `node` is the block's token slice, so extract.ts and group.ts (W2) read the same parse.\nexport interface Block {\n type: BlockType;\n startLine: number;\n endLine: number;\n depth?: number;\n text?: string;\n node: Token[];\n}\n\nexport interface ChunkOptions {\n // D3/W3b: the pgc pairing cap and the sole owner lever (embed.chunkTokens); default 500.\n targetTokens?: number;\n // D9: 'raw' (source lines verbatim) is the shipped default; 'extracted' (flavor-resolved)\n // stays available for a future measured revisit, not currently shipped.\n text?: 'extracted' | 'raw';\n}\n\n// One grouped, extracted unit: 1-indexed line extent over the body, flavor-resolved text.\nexport interface Chunk {\n startLine: number;\n endLine: number;\n text: string;\n}\n"],"names":[],"mappings":"AAuBA,0FAA0F;AAC1F,WAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/chunk/version.ts"],"sourcesContent":["// D8: bump whenever chunk semantics change (grouping, sizing, splitting); the digest in\n// test/unit/chunk/version.test.ts tracks EXTRACTION changes only, so the two move independently.\nexport const CHUNK_VERSION = 'chunk:v6';\n"],"names":["CHUNK_VERSION"],"mappings":"AAAA,wFAAwF;AACxF,iGAAiG;AACjG,OAAO,MAAMA,gBAAgB,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/build.ts"],"sourcesContent":["import { buildIndex } from '../store/index.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, parse, printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst build: Command = async (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.build}`, { force: { type: 'boolean', default: false }, ...CONFIG });\n const result = await buildIndex(ctx.resolveConfig(values.config as string | undefined), { force: values.force === true });\n printWarnings(result.warnings);\n console.log(`${ctx.name} build: ${result.parsed} file(s) parsed; index ready at ${result.dbPath}`);\n};\n\nexport default build;\n"],"names":["buildIndex","USAGE","CONFIG","parse","printWarnings","build","ctx","values","argv","name","force","type","default","result","resolveConfig","config","warnings","console","log","parsed","dbPath"],"mappings":"AAAA,SAASA,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,KAAK,EAAEC,aAAa,QAAQ,cAAc;AAG3D,MAAMC,QAAiB,OAAOC;IAC5B,MAAM,EAAEC,MAAM,EAAE,GAAGJ,MAAMG,IAAIE,IAAI,EAAE,CAAC,OAAO,EAAEF,IAAIG,IAAI,CAAC,CAAC,EAAER,MAAMI,KAAK,EAAE,EAAE;QAAEK,OAAO;YAAEC,MAAM;YAAWC,SAAS;QAAM;QAAG,GAAGV,MAAM;IAAC;IAChI,MAAMW,SAAS,MAAMb,WAAWM,IAAIQ,aAAa,CAACP,OAAOQ,MAAM,GAAyB;QAAEL,OAAOH,OAAOG,KAAK,KAAK;IAAK;IACvHN,cAAcS,OAAOG,QAAQ;IAC7BC,QAAQC,GAAG,CAAC,GAAGZ,IAAIG,IAAI,CAAC,QAAQ,EAAEI,OAAOM,MAAM,CAAC,gCAAgC,EAAEN,OAAOO,MAAM,EAAE;AACnG;AAEA,eAAef,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/download.ts"],"sourcesContent":["import { basename } from 'node:path';\nimport { embedConfig } from '../config/index.ts';\nimport { downloadModel, isDownloadable, modelDir, modelPresent } from '../embed/store.ts';\nimport { SenseError } from '../errors.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, parse } from './shared.ts';\nimport type { Command } from './types.ts';\n\n// A prefetch over the store's own fetch path: a search would fetch the same weights\n// lazily, so this only moves the wait earlier. Idempotent; asks nothing, so CI can run it unattended.\nconst download: Command = async (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.download}`, { ...CONFIG });\n const cfg = ctx.resolveConfig(values.config as string | undefined);\n const e = embedConfig(cfg);\n if (!e) throw new SenseError('EMBED_DISABLED', 'no preset asks for vectors, so there is no model to download');\n\n if (e.provider !== 'static') {\n console.log(`embed provider is \"${e.provider}\" (${e.url}), so there is nothing to download; ${ctx.name} search reaches it over the network`);\n return;\n }\n if (modelPresent(cfg)) {\n const at = isDownloadable(e.model) ? `@${basename(modelDir(e.model))} ` : ' ';\n console.log(`${e.model}${at}is already available in ${modelDir(e.model)}`);\n return;\n }\n const dir = await downloadModel(e.model, (file, into) => console.error(`fetching ${e.model}/${file} into ${into}`));\n console.log(`downloaded ${e.model}@${basename(dir)} into ${dir}`);\n};\nexport default download;\n"],"names":["basename","embedConfig","downloadModel","isDownloadable","modelDir","modelPresent","SenseError","USAGE","CONFIG","parse","download","ctx","values","argv","name","cfg","resolveConfig","config","e","provider","console","log","url","at","model","dir","file","into","error"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,YAAY;AACrC,SAASC,WAAW,QAAQ,qBAAqB;AACjD,SAASC,aAAa,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,YAAY,QAAQ,oBAAoB;AAC1F,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,KAAK,QAAQ,cAAc;AAG5C,oFAAoF;AACpF,sGAAsG;AACtG,MAAMC,WAAoB,OAAOC;IAC/B,MAAM,EAAEC,MAAM,EAAE,GAAGH,MAAME,IAAIE,IAAI,EAAE,CAAC,OAAO,EAAEF,IAAIG,IAAI,CAAC,CAAC,EAAEP,MAAMG,QAAQ,EAAE,EAAE;QAAE,GAAGF,MAAM;IAAC;IACvF,MAAMO,MAAMJ,IAAIK,aAAa,CAACJ,OAAOK,MAAM;IAC3C,MAAMC,IAAIjB,YAAYc;IACtB,IAAI,CAACG,GAAG,MAAM,IAAIZ,WAAW,kBAAkB;IAE/C,IAAIY,EAAEC,QAAQ,KAAK,UAAU;QAC3BC,QAAQC,GAAG,CAAC,CAAC,mBAAmB,EAAEH,EAAEC,QAAQ,CAAC,GAAG,EAAED,EAAEI,GAAG,CAAC,oCAAoC,EAAEX,IAAIG,IAAI,CAAC,mCAAmC,CAAC;QAC3I;IACF;IACA,IAAIT,aAAaU,MAAM;QACrB,MAAMQ,KAAKpB,eAAee,EAAEM,KAAK,IAAI,CAAC,CAAC,EAAExB,SAASI,SAASc,EAAEM,KAAK,GAAG,CAAC,CAAC,GAAG;QAC1EJ,QAAQC,GAAG,CAAC,GAAGH,EAAEM,KAAK,GAAGD,GAAG,wBAAwB,EAAEnB,SAASc,EAAEM,KAAK,GAAG;QACzE;IACF;IACA,MAAMC,MAAM,MAAMvB,cAAcgB,EAAEM,KAAK,EAAE,CAACE,MAAMC,OAASP,QAAQQ,KAAK,CAAC,CAAC,SAAS,EAAEV,EAAEM,KAAK,CAAC,CAAC,EAAEE,KAAK,MAAM,EAAEC,MAAM;IACjHP,QAAQC,GAAG,CAAC,CAAC,WAAW,EAAEH,EAAEM,KAAK,CAAC,CAAC,EAAExB,SAASyB,KAAK,MAAM,EAAEA,KAAK;AAClE;AACA,eAAef,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/index.ts"],"sourcesContent":["import type { Command } from './types.ts';\n\n// Each command's usage line, minus the leading \"usage: <name> \": shared by cli.ts's\n// usage() and the command's own parse() error/--help output so there is one copy, not two.\nexport const USAGE = {\n init: 'init [--model id-or-path] [--provider static|openai|cohere] [--url url]',\n build: 'build [--force] [--config path]',\n watch: 'watch [--force] [--config path]',\n status: 'status [--format table|json] [--config path]',\n download: 'download [--config path]',\n sql: 'sql \"<statement>\" [params...] [--preset name] [--no-build] [--format table|json|csv] [--config path]',\n search: 'search \"<terms>\" [--preset name] [--include glob ...] [--exclude glob ...] [--no-exclude] [--where \"<sql>\"] [--k n] [--snippet-char-limit n] [--snippet-count-limit n] [--explain] [--no-build] [--format table|json|csv] [--config path]',\n map: 'map [--preset name] [--include glob ...] [--exclude glob ...] [--no-exclude] [--where \"<sql>\"] [--no-build] [--format table|json] [--config path]',\n peek: 'peek <path> [--preset name] [--include glob ...] [--exclude glob ...] [--no-exclude] [--where \"<sql>\"] [--section-count-limit n] [--link-count-limit n] [--no-build] [--format table|json] [--config path]',\n path: 'path <a> <b> [--preset name] [--include glob ...] [--exclude glob ...] [--no-exclude] [--where \"<sql>\"] [--max-depth n] [--no-build] [--format table|json] [--config path]',\n related: 'related <note> [--preset name] [--include glob ...] [--exclude glob ...] [--no-exclude] [--where \"<sql>\"] [--k n] [--no-build] [--format table|json|csv] [--config path]',\n} as const;\n\n// Lazy registry: a command's imports load only when it runs, so a heavy dependency in one\n// command never taxes the others (or --version/--help). These names are reserved from saved queries.\nexport const COMMANDS: Record<string, () => Promise<{ default: Command }>> = {\n init: () => import('./init.ts'),\n build: () => import('./build.ts'),\n watch: () => import('./watch.ts'),\n status: () => import('./status.ts'),\n download: () => import('./download.ts'),\n sql: () => import('./sql.ts'),\n search: () => import('./search.ts'),\n map: () => import('./map.ts'),\n peek: () => import('./peek.ts'),\n path: () => import('./path.ts'),\n related: () => import('./related.ts'),\n};\n\nexport type { Command, Ctx } from './types.ts';\n"],"names":["USAGE","init","build","watch","status","download","sql","search","map","peek","path","related","COMMANDS"],"mappings":"AAEA,oFAAoF;AACpF,2FAA2F;AAC3F,OAAO,MAAMA,QAAQ;IACnBC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,QAAQ;IACRC,UAAU;IACVC,KAAK;IACLC,QAAQ;IACRC,KAAK;IACLC,MAAM;IACNC,MAAM;IACNC,SAAS;AACX,EAAW;AAEX,0FAA0F;AAC1F,qGAAqG;AACrG,OAAO,MAAMC,WAAgE;IAC3EX,MAAM,IAAM,MAAM,CAAC;IACnBC,OAAO,IAAM,MAAM,CAAC;IACpBC,OAAO,IAAM,MAAM,CAAC;IACpBC,QAAQ,IAAM,MAAM,CAAC;IACrBC,UAAU,IAAM,MAAM,CAAC;IACvBC,KAAK,IAAM,MAAM,CAAC;IAClBC,QAAQ,IAAM,MAAM,CAAC;IACrBC,KAAK,IAAM,MAAM,CAAC;IAClBC,MAAM,IAAM,MAAM,CAAC;IACnBC,MAAM,IAAM,MAAM,CAAC;IACnBC,SAAS,IAAM,MAAM,CAAC;AACxB,EAAE"}
|
package/dist/esm/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/init.ts"],"sourcesContent":["import { DEFAULT_EMBED_MODEL, initConfig } from '../config/index.ts';\nimport { USAGE } from './index.ts';\nimport { parse } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst init: Command = (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.init}`, {\n model: { type: 'string' },\n provider: { type: 'string' },\n url: { type: 'string' },\n });\n const modelFlag = values.model as string | undefined;\n const providerFlag = values.provider as string | undefined;\n const model = modelFlag ?? DEFAULT_EMBED_MODEL;\n const provider = providerFlag ?? 'static';\n const url = values.url as string | undefined;\n // An invalid --provider throws here (validateConfig's own shape error), before anything is\n // written -- one validator, not a second copy of its rules.\n const configPath = initConfig(process.cwd(), { model: modelFlag, provider: providerFlag, url });\n console.log(`created ${configPath}`);\n console.log(`query away: ${ctx.name} sql \"SELECT path FROM frontmatter LIMIT 10\"`);\n // Naming a model is consent to fetch it, so writing one into the config says so loudly,\n // with the download consequence and the prefetch command, right where it was just written.\n if (provider === 'static') {\n console.log(`embed model: ${model} (static); ${ctx.name} build, watch, or a vector search downloads it when needed -- ${ctx.name} download fetches it now instead`);\n } else {\n console.log(`embed model: ${model} (${provider}${url ? ` at ${url}` : ''}); build, watch, and vector queries use the network, nothing to download`);\n }\n console.log('a non-English tree should pick a model for its languages: see the sense-setup skill or INTEGRATIONS.md');\n // The decisions a new tree faces -- features, frontmatter conventions, note size -- are not\n // in this output; name both places that hold them, since an agent may have neither.\n console.log('features and tree design: the sense-setup skill, or schema.json');\n};\nexport default init;\n"],"names":["DEFAULT_EMBED_MODEL","initConfig","USAGE","parse","init","ctx","values","argv","name","model","type","provider","url","modelFlag","providerFlag","configPath","process","cwd","console","log"],"mappings":"AAAA,SAASA,mBAAmB,EAAEC,UAAU,QAAQ,qBAAqB;AACrE,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,KAAK,QAAQ,cAAc;AAGpC,MAAMC,OAAgB,CAACC;IACrB,MAAM,EAAEC,MAAM,EAAE,GAAGH,MAAME,IAAIE,IAAI,EAAE,CAAC,OAAO,EAAEF,IAAIG,IAAI,CAAC,CAAC,EAAEN,MAAME,IAAI,EAAE,EAAE;QACrEK,OAAO;YAAEC,MAAM;QAAS;QACxBC,UAAU;YAAED,MAAM;QAAS;QAC3BE,KAAK;YAAEF,MAAM;QAAS;IACxB;IACA,MAAMG,YAAYP,OAAOG,KAAK;IAC9B,MAAMK,eAAeR,OAAOK,QAAQ;IACpC,MAAMF,QAAQI,sBAAAA,uBAAAA,YAAab;IAC3B,MAAMW,WAAWG,yBAAAA,0BAAAA,eAAgB;IACjC,MAAMF,MAAMN,OAAOM,GAAG;IACtB,2FAA2F;IAC3F,4DAA4D;IAC5D,MAAMG,aAAad,WAAWe,QAAQC,GAAG,IAAI;QAAER,OAAOI;QAAWF,UAAUG;QAAcF;IAAI;IAC7FM,QAAQC,GAAG,CAAC,CAAC,QAAQ,EAAEJ,YAAY;IACnCG,QAAQC,GAAG,CAAC,CAAC,YAAY,EAAEd,IAAIG,IAAI,CAAC,4CAA4C,CAAC;IACjF,wFAAwF;IACxF,2FAA2F;IAC3F,IAAIG,aAAa,UAAU;QACzBO,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEV,MAAM,WAAW,EAAEJ,IAAIG,IAAI,CAAC,8DAA8D,EAAEH,IAAIG,IAAI,CAAC,gCAAgC,CAAC;IACpK,OAAO;QACLU,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEV,MAAM,EAAE,EAAEE,WAAWC,MAAM,CAAC,IAAI,EAAEA,KAAK,GAAG,GAAG,wEAAwE,CAAC;IACpJ;IACAM,QAAQC,GAAG,CAAC;IACZ,4FAA4F;IAC5F,oFAAoF;IACpFD,QAAQC,GAAG,CAAC;AACd;AACA,eAAef,KAAK"}
|
package/dist/esm/cli/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/map.ts"],"sourcesContent":["import { mapTree } from '../commands/map.ts';\nimport { renderMap, stringifyJson } from '../output/output.ts';\nimport type { BuildRequirement } from '../store/open.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, formatOf, NO_BUILD, parse, SCOPE, scopeOf, withDb } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst map: Command = (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.map}`, { ...SCOPE, ...NO_BUILD, ...FORMAT, ...CONFIG });\n const format = formatOf(values);\n return withDb(ctx, values.config as string | undefined, { noBuild: values['no-build'] === true, requirements: new Set<BuildRequirement>(['core']) }, async (store, cfg) => {\n const result = await mapTree(store, cfg, scopeOf(values));\n console.log(format === 'json' ? stringifyJson(result, 2) : renderMap(result));\n });\n};\nexport default map;\n"],"names":["mapTree","renderMap","stringifyJson","USAGE","CONFIG","FORMAT","formatOf","NO_BUILD","parse","SCOPE","scopeOf","withDb","map","ctx","values","argv","name","format","config","noBuild","requirements","Set","store","cfg","result","console","log"],"mappings":"AAAA,SAASA,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,SAAS,EAAEC,aAAa,QAAQ,sBAAsB;AAE/D,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,QAAQ,cAAc;AAGhG,MAAMC,MAAe,CAACC;IACpB,MAAM,EAAEC,MAAM,EAAE,GAAGN,MAAMK,IAAIE,IAAI,EAAE,CAAC,OAAO,EAAEF,IAAIG,IAAI,CAAC,CAAC,EAAEb,MAAMS,GAAG,EAAE,EAAE;QAAE,GAAGH,KAAK;QAAE,GAAGF,QAAQ;QAAE,GAAGF,MAAM;QAAE,GAAGD,MAAM;IAAC;IACpH,MAAMa,SAASX,SAASQ;IACxB,OAAOH,OAAOE,KAAKC,OAAOI,MAAM,EAAwB;QAAEC,SAASL,MAAM,CAAC,WAAW,KAAK;QAAMM,cAAc,IAAIC,IAAsB;YAAC;SAAO;IAAE,GAAG,OAAOC,OAAOC;QACjK,MAAMC,SAAS,MAAMxB,QAAQsB,OAAOC,KAAKb,QAAQI;QACjDW,QAAQC,GAAG,CAACT,WAAW,SAASf,cAAcsB,QAAQ,KAAKvB,UAAUuB;IACvE;AACF;AACA,eAAeZ,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/named.ts"],"sourcesContent":["import { scopedPaths } from '../commands/scope.ts';\nimport { search } from '../commands/search.ts';\nimport { resolveSearch } from '../config/index.ts';\nimport { printRows } from '../output/output.ts';\nimport { type BuildRequirement, prepareDocumentEmbeddings } from '../store/open.ts';\nimport { CONFIG, FORMAT, NO_BUILD, parse, parseK, parseSnippetCharLimit, parseSnippetCountLimit, rowFormatOf, runSql, SEARCH_FLAGS, withResolvedDb } from './shared.ts';\nimport type { Ctx } from './types.ts';\n\n// Fallback when the first positional is not a command: a saved query, { sql } or { search }.\n// SEARCH_FLAGS override a saved search's fields the same way they override a preset's.\nexport default async function named(ctx: Ctx, queryName: string): Promise<void> {\n const usage = `usage: ${ctx.name} ${queryName} [params...] [--format table|json|csv] [--config path] [--where \"<sql>\"] [--k n] [--snippet-char-limit n] [--snippet-count-limit n] [--preset name] [--include glob ...] [--exclude glob ...] [--no-exclude] [--no-build]`;\n const { values, positionals: params } = parse(ctx.argv, usage, { ...SEARCH_FLAGS, ...NO_BUILD, ...FORMAT, ...CONFIG });\n const format = rowFormatOf(values);\n const configPath = values.config as string | undefined;\n const noBuild = values['no-build'] === true;\n\n const cfg = ctx.resolveConfig(configPath, { writeMigration: !noBuild, query: true });\n const entry = cfg.queries[queryName];\n if (entry === undefined) {\n console.error(`unknown command or saved entry: \"${queryName}\"`);\n console.error(`saved queries: ${Object.keys(cfg.queries).sort().join(', ')}`);\n process.exit(2);\n }\n\n if ('sql' in entry) {\n // A saved statement written against `scope` is preset-agnostic, so the same entry can be\n // re-pointed at another layer from the command line instead of being copied per preset.\n await runSql(cfg, entry.sql, params, format, `query \"${queryName}\"`, noBuild, values.preset as string | undefined);\n return;\n }\n\n // A saved search's text is fixed in config; there is nowhere for a positional to bind.\n if (params.length > 0) {\n ctx.usageError(`\"${queryName}\" is a saved search and takes no positional parameters; edit its \"search\" in sense.config.json, or use \"${ctx.name} search\" directly`);\n }\n const k = parseK(values.k as string | undefined, ctx.usageError) ?? entry.k;\n const snippetCharLimit = parseSnippetCharLimit(values['snippet-char-limit'] as string | undefined, ctx.usageError);\n const snippetCountLimit = parseSnippetCountLimit(values['snippet-count-limit'] as string | undefined, ctx.usageError);\n const where = (values.where as string | undefined) ?? entry.where;\n const preset = (values.preset as string | undefined) ?? entry.preset;\n const include = (values.include as string[] | undefined) ?? entry.include;\n const exclude = (values.exclude as string[] | undefined) ?? entry.exclude;\n const noExclude = values['no-exclude'] === true;\n const overrides = { k, snippetCharLimit, snippetCountLimit, where, preset, include, exclude, noExclude };\n await withResolvedDb(\n cfg,\n {\n noBuild,\n requirements: (resolvedCfg) => {\n const signals = resolveSearch(resolvedCfg, overrides).signals;\n const requirements = new Set<BuildRequirement>(['core']);\n if (signals.words !== undefined) requirements.add('lexical');\n return requirements;\n },\n },\n async (store, resolvedCfg, build) => {\n if (build && resolveSearch(resolvedCfg, overrides).signals.vectors !== undefined) {\n await prepareDocumentEmbeddings(store, resolvedCfg, await scopedPaths(store, resolvedCfg, overrides));\n }\n printRows(await search(store, resolvedCfg, entry.search, overrides), format);\n }\n );\n}\n"],"names":["scopedPaths","search","resolveSearch","printRows","prepareDocumentEmbeddings","CONFIG","FORMAT","NO_BUILD","parse","parseK","parseSnippetCharLimit","parseSnippetCountLimit","rowFormatOf","runSql","SEARCH_FLAGS","withResolvedDb","named","ctx","queryName","values","usage","name","positionals","params","argv","format","configPath","config","noBuild","cfg","resolveConfig","writeMigration","query","entry","queries","undefined","console","error","Object","keys","sort","join","process","exit","sql","preset","length","usageError","k","snippetCharLimit","snippetCountLimit","where","include","exclude","noExclude","overrides","requirements","resolvedCfg","signals","Set","words","add","store","build","vectors"],"mappings":"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"}
|
package/dist/esm/cli/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/path.ts"],"sourcesContent":["import { findPath } from '../commands/path.ts';\nimport type { Row } from '../output/output.ts';\nimport { printRows } from '../output/output.ts';\nimport type { BuildRequirement } from '../store/open.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, formatOf, NO_BUILD, parse, SCOPE, scopeOf, withDb } from './shared.ts';\nimport type { Command } from './types.ts';\n\n// --max-depth must be a positive integer, mirroring shared.ts's parseK.\nfunction parseMaxDepth(depth: string | undefined, usageError: (message: string) => never): number | undefined {\n if (depth === undefined) return undefined;\n const parsed = Number(depth);\n if (!Number.isInteger(parsed) || parsed <= 0) usageError(`--max-depth expects a positive integer, got \"${depth}\"`);\n return parsed;\n}\n\nconst pathCmd: Command = (ctx) => {\n const usage = `usage: ${ctx.name} ${USAGE.path}`;\n const { values, positionals } = parse(ctx.argv, usage, { ...SCOPE, ...NO_BUILD, ...FORMAT, ...CONFIG, 'max-depth': { type: 'string' } });\n const [a, b] = positionals;\n if (!a || !b) ctx.usageError(usage);\n const maxDepth = parseMaxDepth(values['max-depth'] as string | undefined, ctx.usageError);\n const format = formatOf(values);\n return withDb(ctx, values.config as string | undefined, { noBuild: values['no-build'] === true, requirements: new Set<BuildRequirement>(['core']) }, async (store, cfg) => {\n const hops = await findPath(store, cfg, a, b, { ...scopeOf(values), maxDepth });\n\n if (format === 'json') {\n console.log(JSON.stringify(hops));\n return;\n }\n if (hops === null) {\n console.log(maxDepth ? `no path within ${maxDepth} hops` : 'no path');\n return;\n }\n const rows: Row[] = hops.map((p, step) => ({ step, path: p }));\n printRows(rows, format);\n });\n};\nexport default pathCmd;\n"],"names":["findPath","printRows","USAGE","CONFIG","FORMAT","formatOf","NO_BUILD","parse","SCOPE","scopeOf","withDb","parseMaxDepth","depth","usageError","undefined","parsed","Number","isInteger","pathCmd","ctx","usage","name","path","values","positionals","argv","type","a","b","maxDepth","format","config","noBuild","requirements","Set","store","cfg","hops","console","log","JSON","stringify","rows","map","p","step"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,sBAAsB;AAE/C,SAASC,SAAS,QAAQ,sBAAsB;AAEhD,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,QAAQ,cAAc;AAGhG,wEAAwE;AACxE,SAASC,cAAcC,KAAyB,EAAEC,UAAsC;IACtF,IAAID,UAAUE,WAAW,OAAOA;IAChC,MAAMC,SAASC,OAAOJ;IACtB,IAAI,CAACI,OAAOC,SAAS,CAACF,WAAWA,UAAU,GAAGF,WAAW,CAAC,6CAA6C,EAAED,MAAM,CAAC,CAAC;IACjH,OAAOG;AACT;AAEA,MAAMG,UAAmB,CAACC;IACxB,MAAMC,QAAQ,CAAC,OAAO,EAAED,IAAIE,IAAI,CAAC,CAAC,EAAEnB,MAAMoB,IAAI,EAAE;IAChD,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGjB,MAAMY,IAAIM,IAAI,EAAEL,OAAO;QAAE,GAAGZ,KAAK;QAAE,GAAGF,QAAQ;QAAE,GAAGF,MAAM;QAAE,GAAGD,MAAM;QAAE,aAAa;YAAEuB,MAAM;QAAS;IAAE;IACtI,MAAM,CAACC,GAAGC,EAAE,GAAGJ;IACf,IAAI,CAACG,KAAK,CAACC,GAAGT,IAAIN,UAAU,CAACO;IAC7B,MAAMS,WAAWlB,cAAcY,MAAM,CAAC,YAAY,EAAwBJ,IAAIN,UAAU;IACxF,MAAMiB,SAASzB,SAASkB;IACxB,OAAOb,OAAOS,KAAKI,OAAOQ,MAAM,EAAwB;QAAEC,SAAST,MAAM,CAAC,WAAW,KAAK;QAAMU,cAAc,IAAIC,IAAsB;YAAC;SAAO;IAAE,GAAG,OAAOC,OAAOC;QACjK,MAAMC,OAAO,MAAMrC,SAASmC,OAAOC,KAAKT,GAAGC,GAAG;YAAE,GAAGnB,QAAQc,OAAO;YAAEM;QAAS;QAE7E,IAAIC,WAAW,QAAQ;YACrBQ,QAAQC,GAAG,CAACC,KAAKC,SAAS,CAACJ;YAC3B;QACF;QACA,IAAIA,SAAS,MAAM;YACjBC,QAAQC,GAAG,CAACV,WAAW,CAAC,eAAe,EAAEA,SAAS,KAAK,CAAC,GAAG;YAC3D;QACF;QACA,MAAMa,OAAcL,KAAKM,GAAG,CAAC,CAACC,GAAGC,OAAU,CAAA;gBAAEA;gBAAMvB,MAAMsB;YAAE,CAAA;QAC3D3C,UAAUyC,MAAMZ;IAClB;AACF;AACA,eAAeZ,QAAQ"}
|
package/dist/esm/cli/peek.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/peek.ts"],"sourcesContent":["import { peek } from '../commands/peek.ts';\nimport { renderPeek, stringifyJson } from '../output/output.ts';\nimport type { BuildRequirement } from '../store/open.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, formatOf, NO_BUILD, parse, SCOPE, scopeOf, withDb } from './shared.ts';\nimport type { Command } from './types.ts';\n\nfunction parseCountLimit(name: string, value: string | undefined, usageError: (message: string) => never): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isSafeInteger(parsed) || parsed <= 0) usageError(`--${name} expects a positive safe integer, got \"${value}\"`);\n return parsed;\n}\n\nconst peekCmd: Command = (ctx) => {\n const usage = `usage: ${ctx.name} ${USAGE.peek}`;\n const { values, positionals } = parse(ctx.argv, usage, { ...SCOPE, ...NO_BUILD, ...FORMAT, ...CONFIG, 'section-count-limit': { type: 'string' }, 'link-count-limit': { type: 'string' } });\n const [pathArg] = positionals;\n if (!pathArg) ctx.usageError(usage);\n const sectionCountLimit = parseCountLimit('section-count-limit', values['section-count-limit'] as string | undefined, ctx.usageError);\n const linkCountLimit = parseCountLimit('link-count-limit', values['link-count-limit'] as string | undefined, ctx.usageError);\n const format = formatOf(values);\n return withDb(ctx, values.config as string | undefined, { noBuild: values['no-build'] === true, requirements: new Set<BuildRequirement>(['core']) }, async (store, cfg) => {\n const overrides = { ...scopeOf(values), sectionCountLimit, linkCountLimit };\n const result = await peek(store, cfg, pathArg, overrides);\n console.log(format === 'json' ? stringifyJson(result, 2) : renderPeek(result));\n });\n};\nexport default peekCmd;\n"],"names":["peek","renderPeek","stringifyJson","USAGE","CONFIG","FORMAT","formatOf","NO_BUILD","parse","SCOPE","scopeOf","withDb","parseCountLimit","name","value","usageError","undefined","parsed","Number","isSafeInteger","peekCmd","ctx","usage","values","positionals","argv","type","pathArg","sectionCountLimit","linkCountLimit","format","config","noBuild","requirements","Set","store","cfg","overrides","result","console","log"],"mappings":"AAAA,SAASA,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,UAAU,EAAEC,aAAa,QAAQ,sBAAsB;AAEhE,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,QAAQ,cAAc;AAGhG,SAASC,gBAAgBC,IAAY,EAAEC,KAAyB,EAAEC,UAAsC;IACtG,IAAID,UAAUE,WAAW,OAAOA;IAChC,MAAMC,SAASC,OAAOJ;IACtB,IAAI,CAACI,OAAOC,aAAa,CAACF,WAAWA,UAAU,GAAGF,WAAW,CAAC,EAAE,EAAEF,KAAK,uCAAuC,EAAEC,MAAM,CAAC,CAAC;IACxH,OAAOG;AACT;AAEA,MAAMG,UAAmB,CAACC;IACxB,MAAMC,QAAQ,CAAC,OAAO,EAAED,IAAIR,IAAI,CAAC,CAAC,EAAEV,MAAMH,IAAI,EAAE;IAChD,MAAM,EAAEuB,MAAM,EAAEC,WAAW,EAAE,GAAGhB,MAAMa,IAAII,IAAI,EAAEH,OAAO;QAAE,GAAGb,KAAK;QAAE,GAAGF,QAAQ;QAAE,GAAGF,MAAM;QAAE,GAAGD,MAAM;QAAE,uBAAuB;YAAEsB,MAAM;QAAS;QAAG,oBAAoB;YAAEA,MAAM;QAAS;IAAE;IACxL,MAAM,CAACC,QAAQ,GAAGH;IAClB,IAAI,CAACG,SAASN,IAAIN,UAAU,CAACO;IAC7B,MAAMM,oBAAoBhB,gBAAgB,uBAAuBW,MAAM,CAAC,sBAAsB,EAAwBF,IAAIN,UAAU;IACpI,MAAMc,iBAAiBjB,gBAAgB,oBAAoBW,MAAM,CAAC,mBAAmB,EAAwBF,IAAIN,UAAU;IAC3H,MAAMe,SAASxB,SAASiB;IACxB,OAAOZ,OAAOU,KAAKE,OAAOQ,MAAM,EAAwB;QAAEC,SAAST,MAAM,CAAC,WAAW,KAAK;QAAMU,cAAc,IAAIC,IAAsB;YAAC;SAAO;IAAE,GAAG,OAAOC,OAAOC;QACjK,MAAMC,YAAY;YAAE,GAAG3B,QAAQa,OAAO;YAAEK;YAAmBC;QAAe;QAC1E,MAAMS,SAAS,MAAMtC,KAAKmC,OAAOC,KAAKT,SAASU;QAC/CE,QAAQC,GAAG,CAACV,WAAW,SAAS5B,cAAcoC,QAAQ,KAAKrC,WAAWqC;IACxE;AACF;AACA,eAAelB,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/related.ts"],"sourcesContent":["import { RELATED_DEFAULT_K, relatedNotes, resolveRelatedSeed } from '../commands/related.ts';\nimport { scopedPaths } from '../commands/scope.ts';\nimport { resolveSearch } from '../config/index.ts';\nimport { printRows } from '../output/output.ts';\nimport { type BuildRequirement, prepareDocumentEmbeddings } from '../store/open.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, NO_BUILD, parse, parseK, rowFormatOf, SCOPE, scopeOf, withDb } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst relatedCmd: Command = (ctx) => {\n const usage = `usage: ${ctx.name} ${USAGE.related}`;\n const { values, positionals } = parse(ctx.argv, usage, { ...SCOPE, ...NO_BUILD, ...FORMAT, ...CONFIG, k: { type: 'string' } });\n const [pathArg] = positionals;\n if (!pathArg) ctx.usageError(usage);\n const k = parseK(values.k as string | undefined, ctx.usageError) ?? RELATED_DEFAULT_K;\n const format = rowFormatOf(values);\n const noBuild = values['no-build'] === true;\n return withDb(ctx, values.config as string | undefined, { noBuild, requirements: new Set<BuildRequirement>(['core']) }, async (store, cfg, build) => {\n const overrides = scopeOf(values);\n if (build && resolveSearch(cfg, overrides).signals.vectors !== undefined) {\n const path = await resolveRelatedSeed(store, pathArg);\n const allowed = await scopedPaths(store, cfg, overrides);\n await prepareDocumentEmbeddings(store, cfg, new Set([...allowed, path]));\n }\n printRows(await relatedNotes(store, cfg, pathArg, { ...overrides, k }), format);\n });\n};\nexport default relatedCmd;\n"],"names":["RELATED_DEFAULT_K","relatedNotes","resolveRelatedSeed","scopedPaths","resolveSearch","printRows","prepareDocumentEmbeddings","USAGE","CONFIG","FORMAT","NO_BUILD","parse","parseK","rowFormatOf","SCOPE","scopeOf","withDb","relatedCmd","ctx","usage","name","related","values","positionals","argv","k","type","pathArg","usageError","format","noBuild","config","requirements","Set","store","cfg","build","overrides","signals","vectors","undefined","path","allowed"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,YAAY,EAAEC,kBAAkB,QAAQ,yBAAyB;AAC7F,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,aAAa,QAAQ,qBAAqB;AACnD,SAASC,SAAS,QAAQ,sBAAsB;AAChD,SAAgCC,yBAAyB,QAAQ,mBAAmB;AACpF,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,MAAM,EAAEC,WAAW,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,QAAQ,cAAc;AAG3G,MAAMC,aAAsB,CAACC;QAKjBN;IAJV,MAAMO,QAAQ,CAAC,OAAO,EAAED,IAAIE,IAAI,CAAC,CAAC,EAAEb,MAAMc,OAAO,EAAE;IACnD,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGZ,MAAMO,IAAIM,IAAI,EAAEL,OAAO;QAAE,GAAGL,KAAK;QAAE,GAAGJ,QAAQ;QAAE,GAAGD,MAAM;QAAE,GAAGD,MAAM;QAAEiB,GAAG;YAAEC,MAAM;QAAS;IAAE;IAC5H,MAAM,CAACC,QAAQ,GAAGJ;IAClB,IAAI,CAACI,SAAST,IAAIU,UAAU,CAACT;IAC7B,MAAMM,KAAIb,UAAAA,OAAOU,OAAOG,CAAC,EAAwBP,IAAIU,UAAU,eAArDhB,qBAAAA,UAA0DZ;IACpE,MAAM6B,SAAShB,YAAYS;IAC3B,MAAMQ,UAAUR,MAAM,CAAC,WAAW,KAAK;IACvC,OAAON,OAAOE,KAAKI,OAAOS,MAAM,EAAwB;QAAED;QAASE,cAAc,IAAIC,IAAsB;YAAC;SAAO;IAAE,GAAG,OAAOC,OAAOC,KAAKC;QACzI,MAAMC,YAAYtB,QAAQO;QAC1B,IAAIc,SAAShC,cAAc+B,KAAKE,WAAWC,OAAO,CAACC,OAAO,KAAKC,WAAW;YACxE,MAAMC,OAAO,MAAMvC,mBAAmBgC,OAAOP;YAC7C,MAAMe,UAAU,MAAMvC,YAAY+B,OAAOC,KAAKE;YAC9C,MAAM/B,0BAA0B4B,OAAOC,KAAK,IAAIF,IAAI;mBAAIS;gBAASD;aAAK;QACxE;QACApC,UAAU,MAAMJ,aAAaiC,OAAOC,KAAKR,SAAS;YAAE,GAAGU,SAAS;YAAEZ;QAAE,IAAII;IAC1E;AACF;AACA,eAAeZ,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/search.ts"],"sourcesContent":["import { scopedPaths } from '../commands/scope.ts';\nimport { search } from '../commands/search.ts';\nimport { resolveSearch } from '../config/index.ts';\nimport { printRows } from '../output/output.ts';\nimport { type BuildRequirement, prepareDocumentEmbeddings } from '../store/open.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, NO_BUILD, parse, parseK, parseSnippetCharLimit, parseSnippetCountLimit, rowFormatOf, SEARCH_FLAGS, scopeOf, withDb } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst searchCmd: Command = async (ctx) => {\n const usage = `usage: ${ctx.name} ${USAGE.search}`;\n const { values, positionals } = parse(ctx.argv, usage, { ...SEARCH_FLAGS, ...NO_BUILD, ...FORMAT, ...CONFIG, explain: { type: 'boolean' } });\n const [terms] = positionals;\n if (!terms) ctx.usageError(usage);\n const k = parseK(values.k as string | undefined, ctx.usageError);\n const snippetCharLimit = parseSnippetCharLimit(values['snippet-char-limit'] as string | undefined, ctx.usageError);\n const snippetCountLimit = parseSnippetCountLimit(values['snippet-count-limit'] as string | undefined, ctx.usageError);\n const format = rowFormatOf(values);\n const overrides = { k, explain: values.explain === true, snippetCharLimit, snippetCountLimit, ...scopeOf(values) };\n const noBuild = values['no-build'] === true;\n await withDb(\n ctx,\n values.config as string | undefined,\n {\n noBuild,\n requirements: (cfg) => {\n const signals = resolveSearch(cfg, overrides).signals;\n const requirements = new Set<BuildRequirement>(['core']);\n if (signals.words !== undefined) requirements.add('lexical');\n return requirements;\n },\n },\n async (store, cfg, build) => {\n if (build && resolveSearch(cfg, overrides).signals.vectors !== undefined) {\n await prepareDocumentEmbeddings(store, cfg, await scopedPaths(store, cfg, overrides));\n }\n const rows = await search(store, cfg, terms, overrides);\n // Table cells use the shared renderer's width clipping; JSON retains the complete explanation.\n const rendered = overrides.explain && format !== 'json' ? rows.map((row) => ({ ...row, explanation: JSON.stringify(row.explanation) })) : rows;\n printRows(rendered, format);\n }\n );\n};\nexport default searchCmd;\n"],"names":["scopedPaths","search","resolveSearch","printRows","prepareDocumentEmbeddings","USAGE","CONFIG","FORMAT","NO_BUILD","parse","parseK","parseSnippetCharLimit","parseSnippetCountLimit","rowFormatOf","SEARCH_FLAGS","scopeOf","withDb","searchCmd","ctx","usage","name","values","positionals","argv","explain","type","terms","usageError","k","snippetCharLimit","snippetCountLimit","format","overrides","noBuild","config","requirements","cfg","signals","Set","words","undefined","add","store","build","vectors","rows","rendered","map","row","explanation","JSON","stringify"],"mappings":"AAAA,SAASA,WAAW,QAAQ,uBAAuB;AACnD,SAASC,MAAM,QAAQ,wBAAwB;AAC/C,SAASC,aAAa,QAAQ,qBAAqB;AACnD,SAASC,SAAS,QAAQ,sBAAsB;AAChD,SAAgCC,yBAAyB,QAAQ,mBAAmB;AACpF,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,MAAM,EAAEC,qBAAqB,EAAEC,sBAAsB,EAAEC,WAAW,EAAEC,YAAY,EAAEC,OAAO,EAAEC,MAAM,QAAQ,cAAc;AAGjK,MAAMC,YAAqB,OAAOC;IAChC,MAAMC,QAAQ,CAAC,OAAO,EAAED,IAAIE,IAAI,CAAC,CAAC,EAAEf,MAAMJ,MAAM,EAAE;IAClD,MAAM,EAAEoB,MAAM,EAAEC,WAAW,EAAE,GAAGb,MAAMS,IAAIK,IAAI,EAAEJ,OAAO;QAAE,GAAGL,YAAY;QAAE,GAAGN,QAAQ;QAAE,GAAGD,MAAM;QAAE,GAAGD,MAAM;QAAEkB,SAAS;YAAEC,MAAM;QAAU;IAAE;IAC1I,MAAM,CAACC,MAAM,GAAGJ;IAChB,IAAI,CAACI,OAAOR,IAAIS,UAAU,CAACR;IAC3B,MAAMS,IAAIlB,OAAOW,OAAOO,CAAC,EAAwBV,IAAIS,UAAU;IAC/D,MAAME,mBAAmBlB,sBAAsBU,MAAM,CAAC,qBAAqB,EAAwBH,IAAIS,UAAU;IACjH,MAAMG,oBAAoBlB,uBAAuBS,MAAM,CAAC,sBAAsB,EAAwBH,IAAIS,UAAU;IACpH,MAAMI,SAASlB,YAAYQ;IAC3B,MAAMW,YAAY;QAAEJ;QAAGJ,SAASH,OAAOG,OAAO,KAAK;QAAMK;QAAkBC;QAAmB,GAAGf,QAAQM,OAAO;IAAC;IACjH,MAAMY,UAAUZ,MAAM,CAAC,WAAW,KAAK;IACvC,MAAML,OACJE,KACAG,OAAOa,MAAM,EACb;QACED;QACAE,cAAc,CAACC;YACb,MAAMC,UAAUnC,cAAckC,KAAKJ,WAAWK,OAAO;YACrD,MAAMF,eAAe,IAAIG,IAAsB;gBAAC;aAAO;YACvD,IAAID,QAAQE,KAAK,KAAKC,WAAWL,aAAaM,GAAG,CAAC;YAClD,OAAON;QACT;IACF,GACA,OAAOO,OAAON,KAAKO;QACjB,IAAIA,SAASzC,cAAckC,KAAKJ,WAAWK,OAAO,CAACO,OAAO,KAAKJ,WAAW;YACxE,MAAMpC,0BAA0BsC,OAAON,KAAK,MAAMpC,YAAY0C,OAAON,KAAKJ;QAC5E;QACA,MAAMa,OAAO,MAAM5C,OAAOyC,OAAON,KAAKV,OAAOM;QAC7C,+FAA+F;QAC/F,MAAMc,WAAWd,UAAUR,OAAO,IAAIO,WAAW,SAASc,KAAKE,GAAG,CAAC,CAACC,MAAS,CAAA;gBAAE,GAAGA,GAAG;gBAAEC,aAAaC,KAAKC,SAAS,CAACH,IAAIC,WAAW;YAAE,CAAA,KAAMJ;QAC1I1C,UAAU2C,UAAUf;IACtB;AAEJ;AACA,eAAed,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/shared.ts"],"sourcesContent":["import type { ParseArgsOptionsConfig } from 'node:util';\nimport { parseArgs } from 'node:util';\nimport type { ResolvedConfig, SearchOverrides } from '../config/index.ts';\nimport { resolvePreset } from '../config/index.ts';\nimport { columnHint } from '../output/column-hint.ts';\nimport type { Row, RowFormat } from '../output/output.ts';\nimport { printRowStream } from '../output/output.ts';\nimport { searchError } from '../output/search-error.ts';\nimport { openStoreFor } from '../store/index.ts';\nimport type { BuildRequirement, OpenResult } from '../store/open.ts';\nimport type { Store } from '../store/types.ts';\nimport type { Ctx } from './types.ts';\n\n// Spreadable option fragments -- one flag name keeps one meaning across every command's table.\nexport const FORMAT: ParseArgsOptionsConfig = { format: { type: 'string', default: 'table' } };\nexport const CONFIG: ParseArgsOptionsConfig = { config: { type: 'string' } };\nexport const NO_BUILD: ParseArgsOptionsConfig = { 'no-build': { type: 'boolean', default: false } };\n// The scope vocabulary every scoped command shares: named preset, ad hoc include/exclude\n// globs, a where SQL condition. search adds k on top.\nexport const SCOPE: ParseArgsOptionsConfig = {\n where: { type: 'string' },\n preset: { type: 'string' },\n include: { type: 'string', multiple: true },\n exclude: { type: 'string', multiple: true },\n // Widening, which no other flag can express: --include and --exclude each override their\n // own side of the preset, so neither can drop an exclusion the preset declares.\n 'no-exclude': { type: 'boolean', default: false },\n};\nexport const SEARCH_FLAGS: ParseArgsOptionsConfig = { ...SCOPE, k: { type: 'string' }, 'snippet-char-limit': { type: 'string' }, 'snippet-count-limit': { type: 'string' } };\n\ntype Values = Record<string, string | boolean | string[] | undefined>;\n\n// The SCOPE fragment's parsed values as the overrides every scoped command passes down.\n// One place to read them: a new scope field is added to the fragment and here, not per-command.\nexport function scopeOf(values: Values): SearchOverrides {\n return {\n preset: values.preset as string | undefined,\n include: values.include as string[] | undefined,\n exclude: values.exclude as string[] | undefined,\n where: values.where as string | undefined,\n noExclude: values['no-exclude'] === true,\n };\n}\n\n// parseArgs is strict about flag names; this applies the same strictness to the value.\n// An unrecognised --format is a usage error, not a silent fallback to `table`.\nfunction pickFormat<T extends string>(values: Values, allowed: readonly T[]): T {\n const format = String(values.format);\n if ((allowed as readonly string[]).includes(format)) return format as T;\n console.error(`unknown --format \"${format}\"; expected ${allowed.join(', ')}`);\n process.exit(2);\n}\n\nexport function formatOf(values: Values): 'table' | 'json' {\n return pickFormat(values, ['table', 'json'] as const);\n}\n\n// csv is a row set rendered as rows; map, peek, status, and path render structures instead,\n// and take formatOf.\nexport function rowFormatOf(values: Values): RowFormat {\n return pickFormat(values, ['table', 'json', 'csv'] as const);\n}\n\n// Per-command parseArgs: strict (a foreign flag exits 2), and every table gets --help for free.\nexport function parse(argv: string[], usage: string, options: ParseArgsOptionsConfig): { values: Values; positionals: string[] } {\n let values: Values;\n let positionals: string[];\n try {\n ({ values, positionals } = parseArgs({\n args: argv,\n options: { ...options, help: { type: 'boolean', default: false, short: 'h' } },\n strict: true,\n allowPositionals: true,\n }));\n } catch (err) {\n console.error((err as Error).message);\n console.error(usage);\n process.exit(2);\n }\n if (values.help) {\n console.log(usage);\n process.exit(0);\n }\n return { values, positionals };\n}\n\n// --k must be a positive integer: SQLite reads a bound LIMIT of -1 as \"unlimited\" and 0 as \"nothing\", and parseInt would silently truncate \"5.9\".\n// All three are caller mistakes worth a usage error, matching the config-level SavedSearch validation.\nexport function parseK(k: string | undefined, usageError: (message: string) => never): number | undefined {\n if (k === undefined) return undefined;\n const parsed = Number(k);\n if (!Number.isInteger(parsed) || parsed <= 0) usageError(`--k expects a positive integer, got \"${k}\"`);\n return parsed;\n}\n\n// Same positive-integer rule as --k, beside it since both flags come from SEARCH_FLAGS.\nexport function parseSnippetCharLimit(value: string | undefined, usageError: (message: string) => never): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed <= 0) usageError(`--snippet-char-limit expects a positive integer, got \"${value}\"`);\n return parsed;\n}\n\nexport function parseSnippetCountLimit(value: string | undefined, usageError: (message: string) => never): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed <= 0) usageError(`--snippet-count-limit expects a positive integer, got \"${value}\"`);\n return parsed;\n}\n\n// Shared open-query-close envelope for commands that touch the tree.\n\nexport function printWarnings(warnings: string[]): void {\n for (const w of warnings) console.warn(w);\n}\n\nexport interface DbOpenOptions {\n noBuild: boolean;\n requirements: ReadonlySet<BuildRequirement> | ((cfg: ResolvedConfig) => ReadonlySet<BuildRequirement>);\n}\n\nexport async function withResolvedDb(cfg: ResolvedConfig, options: DbOpenOptions, fn: (store: OpenResult['store'], cfg: ResolvedConfig, build: boolean) => void | Promise<void>): Promise<void> {\n const requirements = typeof options.requirements === 'function' ? options.requirements(cfg) : options.requirements;\n const build = !options.noBuild && cfg.build !== false;\n const { store, warnings } = await openStoreFor(cfg, {\n build,\n requirements,\n });\n printWarnings(warnings);\n try {\n await fn(store, cfg, build);\n } finally {\n await store.close();\n }\n}\n\nexport async function withDb(ctx: Ctx, configPath: string | undefined, options: DbOpenOptions, fn: (store: OpenResult['store'], cfg: ResolvedConfig, build: boolean) => void | Promise<void>): Promise<void> {\n const cfg = ctx.resolveConfig(configPath, { writeMigration: !options.noBuild, query: true });\n return withResolvedDb(cfg, options, fn);\n}\n\n// `--preset` on SQL binds a temp `scope` table rather than transparently filtering: temp views shadowing the base tables can't cover `content`, since FTS5 MATCH treats the table name as a hidden column.\n// A flag that silently scoped three tables of four would look scoped and not be.\nasync function bindScope(store: Store, cfg: ResolvedConfig, preset: string): Promise<void> {\n const { name } = resolvePreset(cfg, preset); // unknown names throw, listing what is declared\n await store.exec('DROP TABLE IF EXISTS temp.scope');\n await store.exec('CREATE TEMP TABLE scope (\"path\" TEXT PRIMARY KEY)');\n const insert = await store.prepare('INSERT INTO temp.scope (\"path\") SELECT \"path\" FROM preset_files WHERE preset = ?');\n await insert.run(name);\n}\n\n// An unbound `?` silently binds NULL, so mismatched param counts fail loudly instead.\nexport async function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: RowFormat, label: string, noBuild: boolean, preset?: string): Promise<void> {\n const placeholderCount = (sql.match(/\\?/g) ?? []).length;\n if (params.length !== placeholderCount) {\n console.error(`${label} expects ${placeholderCount} parameter(s), got ${params.length}`);\n process.exit(2);\n }\n // Naming a preset and never joining it would return the whole index while reading as scoped,\n // which is the one hazard of binding rather than applying. Refuse instead.\n if (preset !== undefined && !/\\bscope\\b/i.test(sql)) {\n console.error(`--preset binds a temporary \"scope\" table of the preset's paths, and ${label} never joins it, so the preset would have no effect`);\n console.error(`add: JOIN scope ON scope.\"path\" = <table>.\"path\"`);\n process.exit(2);\n }\n await withResolvedDb(cfg, { noBuild, requirements: new Set<BuildRequirement>(['core']) }, async (store) => {\n if (preset !== undefined) await bindScope(store, cfg, preset);\n // Streamed, not collected: `sql`'s result size is the caller's business, not ours. columns() reads the statement's own metadata, so a 0-row csv gets a header too.\n // A mid-stream SQLite error (e.g. SQLITE_BUSY outlasting busy_timeout) may leave partial output; the nonzero exit code is the failure signal, not a completeness guarantee.\n try {\n const statement = await store.raw.prepare(sql);\n const columns = statement.columns().map((c) => c.name);\n await printRowStream(statement.iterate(...params) as AsyncIterable<Row>, format, columns);\n } catch (err) {\n const hinted = columnHint(await store.docs.columns(), err as Error); // columns read while the store is still open\n // A saved query or ad-hoc SQL can carry `content MATCH ?` too, so the same FTS5 punctuation trap applies to its bound parameters.\n // SQL without MATCH gets its error verbatim; search advice on a plain typo would mislead.\n if (/\\bMATCH\\b/i.test(sql)) throw searchError(hinted, params.join(' '));\n throw hinted;\n }\n });\n}\n"],"names":["parseArgs","resolvePreset","columnHint","printRowStream","searchError","openStoreFor","FORMAT","format","type","default","CONFIG","config","NO_BUILD","SCOPE","where","preset","include","multiple","exclude","SEARCH_FLAGS","k","scopeOf","values","noExclude","pickFormat","allowed","String","includes","console","error","join","process","exit","formatOf","rowFormatOf","parse","argv","usage","options","positionals","args","help","short","strict","allowPositionals","err","message","log","parseK","usageError","undefined","parsed","Number","isInteger","parseSnippetCharLimit","value","parseSnippetCountLimit","printWarnings","warnings","w","warn","withResolvedDb","cfg","fn","requirements","build","noBuild","store","close","withDb","ctx","configPath","resolveConfig","writeMigration","query","bindScope","name","exec","insert","prepare","run","runSql","sql","params","label","placeholderCount","match","length","test","Set","statement","raw","columns","map","c","iterate","hinted","docs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/shared.ts"],"sourcesContent":["import type { ParseArgsOptionsConfig } from 'node:util';\nimport { parseArgs } from 'node:util';\nimport type { ResolvedConfig, SearchOverrides } from '../config/index.ts';\nimport { resolvePreset } from '../config/index.ts';\nimport { columnHint } from '../output/column-hint.ts';\nimport type { Row, RowFormat } from '../output/output.ts';\nimport { printRowStream } from '../output/output.ts';\nimport { searchError } from '../output/search-error.ts';\nimport { openStoreFor } from '../store/index.ts';\nimport type { BuildRequirement, OpenResult } from '../store/open.ts';\nimport type { Store } from '../store/types.ts';\nimport type { Ctx } from './types.ts';\n\n// Spreadable option fragments -- one flag name keeps one meaning across every command's table.\nexport const FORMAT: ParseArgsOptionsConfig = { format: { type: 'string', default: 'table' } };\nexport const CONFIG: ParseArgsOptionsConfig = { config: { type: 'string' } };\nexport const NO_BUILD: ParseArgsOptionsConfig = { 'no-build': { type: 'boolean', default: false } };\n// The scope vocabulary every scoped command shares: named preset, ad hoc include/exclude\n// globs, a where SQL condition. search adds k on top.\nexport const SCOPE: ParseArgsOptionsConfig = {\n where: { type: 'string' },\n preset: { type: 'string' },\n include: { type: 'string', multiple: true },\n exclude: { type: 'string', multiple: true },\n // Widening, which no other flag can express: --include and --exclude each override their\n // own side of the preset, so neither can drop an exclusion the preset declares.\n 'no-exclude': { type: 'boolean', default: false },\n};\nexport const SEARCH_FLAGS: ParseArgsOptionsConfig = { ...SCOPE, k: { type: 'string' }, 'snippet-char-limit': { type: 'string' }, 'snippet-count-limit': { type: 'string' } };\n\ntype Values = Record<string, string | boolean | string[] | undefined>;\n\n// The SCOPE fragment's parsed values as the overrides every scoped command passes down.\n// One place to read them: a new scope field is added to the fragment and here, not per-command.\nexport function scopeOf(values: Values): SearchOverrides {\n return {\n preset: values.preset as string | undefined,\n include: values.include as string[] | undefined,\n exclude: values.exclude as string[] | undefined,\n where: values.where as string | undefined,\n noExclude: values['no-exclude'] === true,\n };\n}\n\n// parseArgs is strict about flag names; this applies the same strictness to the value.\n// An unrecognised --format is a usage error, not a silent fallback to `table`.\nfunction pickFormat<T extends string>(values: Values, allowed: readonly T[]): T {\n const format = String(values.format);\n if ((allowed as readonly string[]).includes(format)) return format as T;\n console.error(`unknown --format \"${format}\"; expected ${allowed.join(', ')}`);\n process.exit(2);\n}\n\nexport function formatOf(values: Values): 'table' | 'json' {\n return pickFormat(values, ['table', 'json'] as const);\n}\n\n// csv is a row set rendered as rows; map, peek, status, and path render structures instead,\n// and take formatOf.\nexport function rowFormatOf(values: Values): RowFormat {\n return pickFormat(values, ['table', 'json', 'csv'] as const);\n}\n\n// Per-command parseArgs: strict (a foreign flag exits 2), and every table gets --help for free.\nexport function parse(argv: string[], usage: string, options: ParseArgsOptionsConfig): { values: Values; positionals: string[] } {\n let values: Values;\n let positionals: string[];\n try {\n ({ values, positionals } = parseArgs({\n args: argv,\n options: { ...options, help: { type: 'boolean', default: false, short: 'h' } },\n strict: true,\n allowPositionals: true,\n }));\n } catch (err) {\n console.error((err as Error).message);\n console.error(usage);\n process.exit(2);\n }\n if (values.help) {\n console.log(usage);\n process.exit(0);\n }\n return { values, positionals };\n}\n\n// --k must be a positive integer: SQLite reads a bound LIMIT of -1 as \"unlimited\" and 0 as \"nothing\", and parseInt would silently truncate \"5.9\".\n// All three are caller mistakes worth a usage error, matching the config-level SavedSearch validation.\nexport function parseK(k: string | undefined, usageError: (message: string) => never): number | undefined {\n if (k === undefined) return undefined;\n const parsed = Number(k);\n if (!Number.isInteger(parsed) || parsed <= 0) usageError(`--k expects a positive integer, got \"${k}\"`);\n return parsed;\n}\n\n// Same positive-integer rule as --k, beside it since both flags come from SEARCH_FLAGS.\nexport function parseSnippetCharLimit(value: string | undefined, usageError: (message: string) => never): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed <= 0) usageError(`--snippet-char-limit expects a positive integer, got \"${value}\"`);\n return parsed;\n}\n\nexport function parseSnippetCountLimit(value: string | undefined, usageError: (message: string) => never): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed <= 0) usageError(`--snippet-count-limit expects a positive integer, got \"${value}\"`);\n return parsed;\n}\n\n// Shared open-query-close envelope for commands that touch the tree.\n\nexport function printWarnings(warnings: string[]): void {\n for (const w of warnings) console.warn(w);\n}\n\nexport interface DbOpenOptions {\n noBuild: boolean;\n requirements: ReadonlySet<BuildRequirement> | ((cfg: ResolvedConfig) => ReadonlySet<BuildRequirement>);\n}\n\nexport async function withResolvedDb(cfg: ResolvedConfig, options: DbOpenOptions, fn: (store: OpenResult['store'], cfg: ResolvedConfig, build: boolean) => void | Promise<void>): Promise<void> {\n const requirements = typeof options.requirements === 'function' ? options.requirements(cfg) : options.requirements;\n const build = !options.noBuild && cfg.build !== false;\n const { store, warnings } = await openStoreFor(cfg, {\n build,\n requirements,\n });\n printWarnings(warnings);\n try {\n await fn(store, cfg, build);\n } finally {\n await store.close();\n }\n}\n\nexport async function withDb(ctx: Ctx, configPath: string | undefined, options: DbOpenOptions, fn: (store: OpenResult['store'], cfg: ResolvedConfig, build: boolean) => void | Promise<void>): Promise<void> {\n const cfg = ctx.resolveConfig(configPath, { writeMigration: !options.noBuild, query: true });\n return withResolvedDb(cfg, options, fn);\n}\n\n// `--preset` on SQL binds a temp `scope` table rather than transparently filtering: temp views shadowing the base tables can't cover `content`, since FTS5 MATCH treats the table name as a hidden column.\n// A flag that silently scoped three tables of four would look scoped and not be.\nasync function bindScope(store: Store, cfg: ResolvedConfig, preset: string): Promise<void> {\n const { name } = resolvePreset(cfg, preset); // unknown names throw, listing what is declared\n await store.exec('DROP TABLE IF EXISTS temp.scope');\n await store.exec('CREATE TEMP TABLE scope (\"path\" TEXT PRIMARY KEY)');\n const insert = await store.prepare('INSERT INTO temp.scope (\"path\") SELECT \"path\" FROM preset_files WHERE preset = ?');\n await insert.run(name);\n}\n\n// An unbound `?` silently binds NULL, so mismatched param counts fail loudly instead.\nexport async function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: RowFormat, label: string, noBuild: boolean, preset?: string): Promise<void> {\n const placeholderCount = (sql.match(/\\?/g) ?? []).length;\n if (params.length !== placeholderCount) {\n console.error(`${label} expects ${placeholderCount} parameter(s), got ${params.length}`);\n process.exit(2);\n }\n // Naming a preset and never joining it would return the whole index while reading as scoped,\n // which is the one hazard of binding rather than applying. Refuse instead.\n if (preset !== undefined && !/\\bscope\\b/i.test(sql)) {\n console.error(`--preset binds a temporary \"scope\" table of the preset's paths, and ${label} never joins it, so the preset would have no effect`);\n console.error(`add: JOIN scope ON scope.\"path\" = <table>.\"path\"`);\n process.exit(2);\n }\n await withResolvedDb(cfg, { noBuild, requirements: new Set<BuildRequirement>(['core']) }, async (store) => {\n if (preset !== undefined) await bindScope(store, cfg, preset);\n // Streamed, not collected: `sql`'s result size is the caller's business, not ours. columns() reads the statement's own metadata, so a 0-row csv gets a header too.\n // A mid-stream SQLite error (e.g. SQLITE_BUSY outlasting busy_timeout) may leave partial output; the nonzero exit code is the failure signal, not a completeness guarantee.\n try {\n const statement = await store.raw.prepare(sql);\n const columns = statement.columns().map((c) => c.name);\n await printRowStream(statement.iterate(...params) as AsyncIterable<Row>, format, columns);\n } catch (err) {\n const hinted = columnHint(await store.docs.columns(), err as Error); // columns read while the store is still open\n // A saved query or ad-hoc SQL can carry `content MATCH ?` too, so the same FTS5 punctuation trap applies to its bound parameters.\n // SQL without MATCH gets its error verbatim; search advice on a plain typo would mislead.\n if (/\\bMATCH\\b/i.test(sql)) throw searchError(hinted, params.join(' '));\n throw hinted;\n }\n });\n}\n"],"names":["parseArgs","resolvePreset","columnHint","printRowStream","searchError","openStoreFor","FORMAT","format","type","default","CONFIG","config","NO_BUILD","SCOPE","where","preset","include","multiple","exclude","SEARCH_FLAGS","k","scopeOf","values","noExclude","pickFormat","allowed","String","includes","console","error","join","process","exit","formatOf","rowFormatOf","parse","argv","usage","options","positionals","args","help","short","strict","allowPositionals","err","message","log","parseK","usageError","undefined","parsed","Number","isInteger","parseSnippetCharLimit","value","parseSnippetCountLimit","printWarnings","warnings","w","warn","withResolvedDb","cfg","fn","requirements","build","noBuild","store","close","withDb","ctx","configPath","resolveConfig","writeMigration","query","bindScope","name","exec","insert","prepare","run","runSql","sql","params","label","placeholderCount","match","length","test","Set","statement","raw","columns","map","c","iterate","hinted","docs"],"mappings":"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"}
|
package/dist/esm/cli/sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/sql.ts"],"sourcesContent":["import { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, NO_BUILD, parse, rowFormatOf, runSql } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst sqlCmd: Command = async (ctx) => {\n const usage = `usage: ${ctx.name} ${USAGE.sql}`;\n const { values, positionals } = parse(ctx.argv, usage, { ...NO_BUILD, ...FORMAT, ...CONFIG, preset: { type: 'string' } });\n const [sql, ...params] = positionals;\n if (!sql) ctx.usageError(usage);\n const format = rowFormatOf(values);\n const noBuild = values['no-build'] === true;\n const cfg = ctx.resolveConfig(values.config as string | undefined, { writeMigration: !noBuild, query: true });\n await runSql(cfg, sql, params, format, 'ad-hoc statement', noBuild, values.preset as string | undefined);\n};\nexport default sqlCmd;\n"],"names":["USAGE","CONFIG","FORMAT","NO_BUILD","parse","rowFormatOf","runSql","sqlCmd","ctx","usage","name","sql","values","positionals","argv","preset","type","params","usageError","format","noBuild","cfg","resolveConfig","config","writeMigration","query"],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,WAAW,EAAEC,MAAM,QAAQ,cAAc;AAGnF,MAAMC,SAAkB,OAAOC;IAC7B,MAAMC,QAAQ,CAAC,OAAO,EAAED,IAAIE,IAAI,CAAC,CAAC,EAAEV,MAAMW,GAAG,EAAE;IAC/C,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAAGT,MAAMI,IAAIM,IAAI,EAAEL,OAAO;QAAE,GAAGN,QAAQ;QAAE,GAAGD,MAAM;QAAE,GAAGD,MAAM;QAAEc,QAAQ;YAAEC,MAAM;QAAS;IAAE;IACvH,MAAM,CAACL,KAAK,GAAGM,OAAO,GAAGJ;IACzB,IAAI,CAACF,KAAKH,IAAIU,UAAU,CAACT;IACzB,MAAMU,SAASd,YAAYO;IAC3B,MAAMQ,UAAUR,MAAM,CAAC,WAAW,KAAK;IACvC,MAAMS,MAAMb,IAAIc,aAAa,CAACV,OAAOW,MAAM,EAAwB;QAAEC,gBAAgB,CAACJ;QAASK,OAAO;IAAK;IAC3G,MAAMnB,OAAOe,KAAKV,KAAKM,QAAQE,QAAQ,oBAAoBC,SAASR,OAAOG,MAAM;AACnF;AACA,eAAeR,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { dirname, join } from 'node:path';\nimport { presetCoverage } from '../commands/status.ts';\nimport { embedConfig, featureStates, STATE_DIR, SUPPORTED_CONFIG_VERSION } from '../config/index.ts';\nimport { languageDistribution } from '../embed/distribution.ts';\nimport { probeReachable } from '../embed/http.ts';\nimport { isDownloadable, MODEL_FILENAMES, modelDir, modelPresent, readLanguages } from '../embed/store.ts';\nimport { SenseError } from '../errors.ts';\nimport { featuresLine, presetsLines, stringifyJson } from '../output/output.ts';\nimport type { OpenResult } from '../store/index.ts';\nimport { docCount, getMeta, lexicalReadiness, openStore, storeFilename } from '../store/index.ts';\nimport type { Store } from '../store/types.ts';\nimport { readWatchClaim } from '../watch-claim.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, formatOf, parse, printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\n// status names what you cannot read off the config file: locations sense chose, values it derived, state it stored. Config content itself is not echoed, since duplicating its globs here would create two places that disagree after an edit.\n// The exception is the embed block's url and key, whose effect is remote and otherwise invisible.\n\n// A failed or interrupted vector preparation can leave core and lexical state usable. Status is\n// observational, so it reports that pending capability instead of repairing it.\nasync function vectorState(store: Store): Promise<{ embedded: number; pending: number } | null> {\n try {\n const stmt = await store.prepare('SELECT COUNT(vector) AS embedded, COUNT(*) - COUNT(vector) AS pending FROM embeddings');\n return (await stmt.get()) as { embedded: number; pending: number };\n } catch {\n return null;\n }\n}\n\nasync function parseErrorCount(store: Store): Promise<number> {\n const stmt = await store.prepare(`SELECT COUNT(*) AS n FROM frontmatter WHERE \"_parse_error\" IS NOT NULL`);\n return ((await stmt.get()) as { n: number }).n;\n}\n\n// A URL can carry credentials in its userinfo (https://user:pass@host/v1). status output gets\n// pasted into issues and transcripts, so it is always safe to paste.\nexport function redactUrl(url: string): string {\n try {\n const parsed = new URL(url);\n if (!parsed.username && !parsed.password) return url;\n parsed.username = '';\n parsed.password = '';\n return `${parsed.toString().replace(/\\/$/, '')} (credentials redacted)`;\n } catch {\n return url;\n }\n}\n\n// A stopped Ollama/LM Studio/Cohere endpoint prints identically to a running one otherwise; any\n// HTTP response counts as reachable (probeReachable), so this only distinguishes up from down.\nasync function embedReachable(e: { provider: string; url?: string }): Promise<boolean | null> {\n if (e.provider === 'static' || (e.provider === 'openai' && !e.url)) return null;\n const base = (e.url ?? 'https://api.cohere.com').replace(/\\/+$/, '');\n return probeReachable(e.provider === 'openai' ? `${base}/models` : base);\n}\n\ntype LanguagesState = 'declared' | 'none' | 'unresolved' | null;\n\n// Config-declared languages win over the model card, for every provider, as registry.ts does.\n// A local-path model has no card by design, so it is never \"unresolved\": that means an HF id.\nfunction languagesInfo(e: NonNullable<ReturnType<typeof embedConfig>>): { languages: string[] | null; state: LanguagesState; source: 'config' | 'card' | null } {\n if (e.languages) return { languages: e.languages, state: 'declared', source: 'config' };\n if (e.provider !== 'static' || !isDownloadable(e.model)) return { languages: null, state: null, source: null };\n const cardLanguages = readLanguages(e.model);\n if (cardLanguages === undefined) return { languages: null, state: 'unresolved', source: null };\n if (cardLanguages.length === 0) return { languages: null, state: 'none', source: null };\n return { languages: cardLanguages, state: 'declared', source: 'card' };\n}\n\nconst status: Command = async (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.status}`, { ...FORMAT, ...CONFIG });\n const format = formatOf(values);\n const cfg = ctx.resolveConfig(values.config as string | undefined, { writeMigration: false });\n const lexical = await lexicalReadiness(cfg);\n let opened: OpenResult;\n try {\n opened = await openStore(cfg, { build: false });\n } catch (err) {\n if (!(err instanceof SenseError) || err.code !== 'INDEX_NOT_READY') throw err;\n const configDir = cfg.configDir ?? cfg.rootDir ?? cfg.baseDir;\n const dbPath = join(configDir, STATE_DIR, storeFilename(cfg));\n const watcher = readWatchClaim(configDir);\n const result = {\n config: cfg.configPath,\n configVersion: SUPPORTED_CONFIG_VERSION,\n migratedFrom: cfg.migratedFrom ?? null,\n unknownConfigKeys: cfg.unknownKeys ?? null,\n tree: cfg.rootDir ?? cfg.baseDir,\n treeRoot: cfg.rootDir ?? cfg.baseDir,\n configDir,\n cache: dirname(dbPath),\n db: dbPath,\n indexReady: false,\n indexError: err.message,\n lexicalReady: lexical.ready,\n lexicalError: lexical.error,\n watcherPid: watcher ? String(watcher.pid) : null,\n watcherHeartbeatSecondsAgo: watcher ? Math.round((Date.now() - watcher.heartbeatMs) / 1000) : null,\n };\n if (format === 'json') {\n console.log(stringifyJson(result, 2));\n } else {\n const migrated = cfg.migratedFrom !== undefined ? `, migration from v${cfg.migratedFrom} pending` : '';\n console.log(`config: ${result.config} (v${SUPPORTED_CONFIG_VERSION}${migrated})`);\n console.log(`tree root: ${result.treeRoot}`);\n console.log(`configDir: ${result.configDir}`);\n console.log(`cache: ${result.cache}`);\n console.log(`index: not ready (${result.indexError})`);\n console.log(`lexical: ${result.lexicalReady ? 'ready' : `not ready (${result.lexicalError})`}`);\n const pid = result.watcherPid ? `pid ${result.watcherPid}, ` : '';\n console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : `watcher: ${pid}last heartbeat ${result.watcherHeartbeatSecondsAgo}s ago`);\n }\n return;\n }\n const { store, dbPath, warnings } = opened;\n try {\n printWarnings(warnings);\n\n const features = featureStates(cfg);\n const e = embedConfig(cfg);\n const hasModel = e ? modelPresent(cfg) : false;\n const reachable = e ? await embedReachable(e) : null;\n const vectors = e ? await vectorState(store) : null;\n const presets = await presetCoverage(store, cfg);\n const { languages: declaredLanguages, state: languagesState, source: languagesSource } = e ? languagesInfo(e) : { languages: null, state: null, source: null };\n const detectedLanguages = (await languageDistribution(store)) ?? null;\n // This is the compatible cache's stored version. Observational open refuses a mismatch rather\n // than rebuilding it before this read.\n const cacheSchema = await getMeta(store, 'schema_version');\n // Each store owns what it reports and how it is worded (Store.engineStatus); this command\n // prints entries generically, without branching on any store's name.\n const engine = await store.engineStatus();\n const watcher = readWatchClaim(cfg.configDir ?? cfg.rootDir ?? cfg.baseDir);\n // The env var holds the token; only its name and whether it is set are ever reported.\n const keyEnv = e?.key ? { name: e.key, set: (process.env[e.key] ?? '') !== '' } : null;\n const result = {\n config: cfg.configPath,\n configVersion: SUPPORTED_CONFIG_VERSION,\n migratedFrom: cfg.migratedFrom ?? null,\n unknownConfigKeys: cfg.unknownKeys ?? null,\n tree: cfg.rootDir ?? cfg.baseDir,\n treeRoot: cfg.rootDir ?? cfg.baseDir,\n configDir: cfg.configDir ?? cfg.baseDir,\n cache: dirname(dbPath),\n db: dbPath,\n indexReady: true,\n indexError: null,\n lexicalReady: lexical.ready,\n lexicalError: lexical.error,\n cacheSchema,\n docs: await docCount(store),\n unparseableFrontmatter: await parseErrorCount(store),\n features: features.on,\n featuresOff: features.off,\n embed: e ? { provider: e.provider, model: e.model, dir: e.provider === 'static' ? modelDir(e.model) : null, url: e.url ? redactUrl(e.url) : null, reachable, keyEnv, downloaded: hasModel, languages: declaredLanguages, languagesState, detectedLanguages, ...(vectors ?? {}) } : null,\n presets,\n queries: Object.keys(cfg.queries ?? {}).length,\n watcherPid: watcher ? String(watcher.pid) : null,\n watcherHeartbeatSecondsAgo: watcher ? Math.round((Date.now() - watcher.heartbeatMs) / 1000) : null,\n engine,\n };\n\n if (format === 'json') {\n console.log(stringifyJson(result, 2));\n } else {\n const migrated = cfg.migratedFrom !== undefined ? `, migration from v${cfg.migratedFrom} applied in memory` : '';\n console.log(`config: ${result.config} (v${SUPPORTED_CONFIG_VERSION}${migrated})`);\n // A load-time stderr warning has scrolled away by the time anyone looks here.\n if (cfg.unknownKeys) console.log(` unknown keys, ignored: ${cfg.unknownKeys.join(', ')}`);\n console.log(`tree root: ${result.treeRoot}`);\n console.log(`configDir: ${result.configDir}`);\n console.log(`cache: ${result.cache} (schema ${result.cacheSchema}; ${ctx.name} build --force to recreate)`);\n console.log(`lexical: ${result.lexicalReady ? 'ready' : `not ready (${result.lexicalError})`}`);\n console.log(`docs: ${result.docs}${result.unparseableFrontmatter > 0 ? ` (${result.unparseableFrontmatter} with unparseable frontmatter: WHERE _parse_error IS NOT NULL)` : ''}`);\n console.log('');\n console.log(featuresLine(features));\n // One authoritative block, off states included: an absent model reads as a degraded search,\n // not as an empty corpus.\n if (!e) console.log('embed: off (no preset asks for vectors)');\n else {\n console.log(`embed: ${e.provider} ${e.model}`);\n if (e.provider === 'static') console.log(` model: ${modelDir(e.model)} (${hasModel ? 'present' : `missing, ${isDownloadable(e.model) ? `fetches when build, watch, or a vector query needs it; run \\`${ctx.name} download\\` to prefetch` : `no ${MODEL_FILENAMES} in that directory`}`})`);\n if (declaredLanguages && languagesSource === 'config') console.log(` languages: ${declaredLanguages.join(', ')} (declared in embed.languages)`);\n else if (declaredLanguages && languagesSource === 'card') console.log(` languages: ${declaredLanguages.join(', ')} (declared by the model card)`);\n else if (languagesState === 'none') console.log(' languages: none declared by the model card');\n else if (languagesState === 'unresolved') console.log(` languages: unresolved (model card unreachable; run \\`${ctx.name} download\\`)`);\n // Cohere defaults to api.cohere.com with no url in the config; show it anyway so the\n // reachability probe below has something to name.\n if (e.url || reachable !== null) {\n const shown = e.url ? redactUrl(e.url) : 'https://api.cohere.com (default)';\n console.log(` url: ${shown}${reachable === null ? '' : reachable ? ' (reachable)' : ' (unreachable)'}`);\n }\n if (keyEnv) console.log(` key: env ${keyEnv.name} (${keyEnv.set ? 'set' : 'NOT SET'})`);\n if (!hasModel) console.log(' vectors: unavailable until the model is present; semantic queries fail, while lexical-only presets remain usable');\n else if (vectors) console.log(` vectors: ${vectors.embedded} embedded, ${vectors.pending} pending${vectors.pending > 0 ? ` (run \\`${ctx.name} build\\` to prepare all configured vectors)` : ''}`);\n if (detectedLanguages) {\n const total = Object.values(detectedLanguages).reduce((a, b) => a + b, 0);\n const breakdown = Object.entries(detectedLanguages)\n .sort((a, b) => b[1] - a[1])\n .map(([code, n]) => `${code} ${Math.round((n / total) * 100)}%`)\n .join(', ');\n console.log(` detected: ${breakdown} (${total} chunks classified)`);\n }\n }\n console.log('');\n for (const line of presetsLines(presets)) console.log(line);\n console.log('');\n console.log(`queries: ${result.queries} saved (${ctx.name} --list)`);\n const pid = result.watcherPid ? `pid ${result.watcherPid}, ` : '';\n console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : `watcher: ${pid}last heartbeat ${result.watcherHeartbeatSecondsAgo}s ago`);\n for (const [key, value] of Object.entries(result.engine)) console.log(`${`${store.name}:`.padEnd(10)}${key} ${value}`);\n }\n } finally {\n await store.close();\n }\n};\nexport default status;\n"],"names":["dirname","join","presetCoverage","embedConfig","featureStates","STATE_DIR","SUPPORTED_CONFIG_VERSION","languageDistribution","probeReachable","isDownloadable","MODEL_FILENAMES","modelDir","modelPresent","readLanguages","SenseError","featuresLine","presetsLines","stringifyJson","docCount","getMeta","lexicalReadiness","openStore","storeFilename","readWatchClaim","USAGE","CONFIG","FORMAT","formatOf","parse","printWarnings","vectorState","store","stmt","prepare","get","parseErrorCount","n","redactUrl","url","parsed","URL","username","password","toString","replace","embedReachable","e","provider","base","languagesInfo","languages","state","source","model","cardLanguages","undefined","length","status","ctx","values","argv","name","format","cfg","resolveConfig","config","writeMigration","lexical","opened","build","err","code","configDir","rootDir","baseDir","dbPath","watcher","result","configPath","configVersion","migratedFrom","unknownConfigKeys","unknownKeys","tree","treeRoot","cache","db","indexReady","indexError","message","lexicalReady","ready","lexicalError","error","watcherPid","String","pid","watcherHeartbeatSecondsAgo","Math","round","Date","now","heartbeatMs","console","log","migrated","warnings","process","features","hasModel","reachable","vectors","presets","declaredLanguages","languagesState","languagesSource","detectedLanguages","cacheSchema","engine","engineStatus","keyEnv","key","set","env","docs","unparseableFrontmatter","on","featuresOff","off","embed","dir","downloaded","queries","Object","keys","shown","embedded","pending","total","reduce","a","b","breakdown","entries","sort","map","line","value","padEnd","close"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { dirname, join } from 'node:path';\nimport { presetCoverage } from '../commands/status.ts';\nimport { embedConfig, featureStates, STATE_DIR, SUPPORTED_CONFIG_VERSION } from '../config/index.ts';\nimport { languageDistribution } from '../embed/distribution.ts';\nimport { probeReachable } from '../embed/http.ts';\nimport { isDownloadable, MODEL_FILENAMES, modelDir, modelPresent, readLanguages } from '../embed/store.ts';\nimport { SenseError } from '../errors.ts';\nimport { featuresLine, presetsLines, stringifyJson } from '../output/output.ts';\nimport type { OpenResult } from '../store/index.ts';\nimport { docCount, getMeta, lexicalReadiness, openStore, storeFilename } from '../store/index.ts';\nimport type { Store } from '../store/types.ts';\nimport { readWatchClaim } from '../watch-claim.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, formatOf, parse, printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\n// status names what you cannot read off the config file: locations sense chose, values it derived, state it stored. Config content itself is not echoed, since duplicating its globs here would create two places that disagree after an edit.\n// The exception is the embed block's url and key, whose effect is remote and otherwise invisible.\n\n// A failed or interrupted vector preparation can leave core and lexical state usable. Status is\n// observational, so it reports that pending capability instead of repairing it.\nasync function vectorState(store: Store): Promise<{ embedded: number; pending: number } | null> {\n try {\n const stmt = await store.prepare('SELECT COUNT(vector) AS embedded, COUNT(*) - COUNT(vector) AS pending FROM embeddings');\n return (await stmt.get()) as { embedded: number; pending: number };\n } catch {\n return null;\n }\n}\n\nasync function parseErrorCount(store: Store): Promise<number> {\n const stmt = await store.prepare(`SELECT COUNT(*) AS n FROM frontmatter WHERE \"_parse_error\" IS NOT NULL`);\n return ((await stmt.get()) as { n: number }).n;\n}\n\n// A URL can carry credentials in its userinfo (https://user:pass@host/v1). status output gets\n// pasted into issues and transcripts, so it is always safe to paste.\nexport function redactUrl(url: string): string {\n try {\n const parsed = new URL(url);\n if (!parsed.username && !parsed.password) return url;\n parsed.username = '';\n parsed.password = '';\n return `${parsed.toString().replace(/\\/$/, '')} (credentials redacted)`;\n } catch {\n return url;\n }\n}\n\n// A stopped Ollama/LM Studio/Cohere endpoint prints identically to a running one otherwise; any\n// HTTP response counts as reachable (probeReachable), so this only distinguishes up from down.\nasync function embedReachable(e: { provider: string; url?: string }): Promise<boolean | null> {\n if (e.provider === 'static' || (e.provider === 'openai' && !e.url)) return null;\n const base = (e.url ?? 'https://api.cohere.com').replace(/\\/+$/, '');\n return probeReachable(e.provider === 'openai' ? `${base}/models` : base);\n}\n\ntype LanguagesState = 'declared' | 'none' | 'unresolved' | null;\n\n// Config-declared languages win over the model card, for every provider, as registry.ts does.\n// A local-path model has no card by design, so it is never \"unresolved\": that means an HF id.\nfunction languagesInfo(e: NonNullable<ReturnType<typeof embedConfig>>): { languages: string[] | null; state: LanguagesState; source: 'config' | 'card' | null } {\n if (e.languages) return { languages: e.languages, state: 'declared', source: 'config' };\n if (e.provider !== 'static' || !isDownloadable(e.model)) return { languages: null, state: null, source: null };\n const cardLanguages = readLanguages(e.model);\n if (cardLanguages === undefined) return { languages: null, state: 'unresolved', source: null };\n if (cardLanguages.length === 0) return { languages: null, state: 'none', source: null };\n return { languages: cardLanguages, state: 'declared', source: 'card' };\n}\n\nconst status: Command = async (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.status}`, { ...FORMAT, ...CONFIG });\n const format = formatOf(values);\n const cfg = ctx.resolveConfig(values.config as string | undefined, { writeMigration: false });\n const lexical = await lexicalReadiness(cfg);\n let opened: OpenResult;\n try {\n opened = await openStore(cfg, { build: false });\n } catch (err) {\n if (!(err instanceof SenseError) || err.code !== 'INDEX_NOT_READY') throw err;\n const configDir = cfg.configDir ?? cfg.rootDir ?? cfg.baseDir;\n const dbPath = join(configDir, STATE_DIR, storeFilename(cfg));\n const watcher = readWatchClaim(configDir);\n const result = {\n config: cfg.configPath,\n configVersion: SUPPORTED_CONFIG_VERSION,\n migratedFrom: cfg.migratedFrom ?? null,\n unknownConfigKeys: cfg.unknownKeys ?? null,\n tree: cfg.rootDir ?? cfg.baseDir,\n treeRoot: cfg.rootDir ?? cfg.baseDir,\n configDir,\n cache: dirname(dbPath),\n db: dbPath,\n indexReady: false,\n indexError: err.message,\n lexicalReady: lexical.ready,\n lexicalError: lexical.error,\n watcherPid: watcher ? String(watcher.pid) : null,\n watcherHeartbeatSecondsAgo: watcher ? Math.round((Date.now() - watcher.heartbeatMs) / 1000) : null,\n };\n if (format === 'json') {\n console.log(stringifyJson(result, 2));\n } else {\n const migrated = cfg.migratedFrom !== undefined ? `, migration from v${cfg.migratedFrom} pending` : '';\n console.log(`config: ${result.config} (v${SUPPORTED_CONFIG_VERSION}${migrated})`);\n console.log(`tree root: ${result.treeRoot}`);\n console.log(`configDir: ${result.configDir}`);\n console.log(`cache: ${result.cache}`);\n console.log(`index: not ready (${result.indexError})`);\n console.log(`lexical: ${result.lexicalReady ? 'ready' : `not ready (${result.lexicalError})`}`);\n const pid = result.watcherPid ? `pid ${result.watcherPid}, ` : '';\n console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : `watcher: ${pid}last heartbeat ${result.watcherHeartbeatSecondsAgo}s ago`);\n }\n return;\n }\n const { store, dbPath, warnings } = opened;\n try {\n printWarnings(warnings);\n\n const features = featureStates(cfg);\n const e = embedConfig(cfg);\n const hasModel = e ? modelPresent(cfg) : false;\n const reachable = e ? await embedReachable(e) : null;\n const vectors = e ? await vectorState(store) : null;\n const presets = await presetCoverage(store, cfg);\n const { languages: declaredLanguages, state: languagesState, source: languagesSource } = e ? languagesInfo(e) : { languages: null, state: null, source: null };\n const detectedLanguages = (await languageDistribution(store)) ?? null;\n // This is the compatible cache's stored version. Observational open refuses a mismatch rather\n // than rebuilding it before this read.\n const cacheSchema = await getMeta(store, 'schema_version');\n // Each store owns what it reports and how it is worded (Store.engineStatus); this command\n // prints entries generically, without branching on any store's name.\n const engine = await store.engineStatus();\n const watcher = readWatchClaim(cfg.configDir ?? cfg.rootDir ?? cfg.baseDir);\n // The env var holds the token; only its name and whether it is set are ever reported.\n const keyEnv = e?.key ? { name: e.key, set: (process.env[e.key] ?? '') !== '' } : null;\n const result = {\n config: cfg.configPath,\n configVersion: SUPPORTED_CONFIG_VERSION,\n migratedFrom: cfg.migratedFrom ?? null,\n unknownConfigKeys: cfg.unknownKeys ?? null,\n tree: cfg.rootDir ?? cfg.baseDir,\n treeRoot: cfg.rootDir ?? cfg.baseDir,\n configDir: cfg.configDir ?? cfg.baseDir,\n cache: dirname(dbPath),\n db: dbPath,\n indexReady: true,\n indexError: null,\n lexicalReady: lexical.ready,\n lexicalError: lexical.error,\n cacheSchema,\n docs: await docCount(store),\n unparseableFrontmatter: await parseErrorCount(store),\n features: features.on,\n featuresOff: features.off,\n embed: e ? { provider: e.provider, model: e.model, dir: e.provider === 'static' ? modelDir(e.model) : null, url: e.url ? redactUrl(e.url) : null, reachable, keyEnv, downloaded: hasModel, languages: declaredLanguages, languagesState, detectedLanguages, ...(vectors ?? {}) } : null,\n presets,\n queries: Object.keys(cfg.queries ?? {}).length,\n watcherPid: watcher ? String(watcher.pid) : null,\n watcherHeartbeatSecondsAgo: watcher ? Math.round((Date.now() - watcher.heartbeatMs) / 1000) : null,\n engine,\n };\n\n if (format === 'json') {\n console.log(stringifyJson(result, 2));\n } else {\n const migrated = cfg.migratedFrom !== undefined ? `, migration from v${cfg.migratedFrom} applied in memory` : '';\n console.log(`config: ${result.config} (v${SUPPORTED_CONFIG_VERSION}${migrated})`);\n // A load-time stderr warning has scrolled away by the time anyone looks here.\n if (cfg.unknownKeys) console.log(` unknown keys, ignored: ${cfg.unknownKeys.join(', ')}`);\n console.log(`tree root: ${result.treeRoot}`);\n console.log(`configDir: ${result.configDir}`);\n console.log(`cache: ${result.cache} (schema ${result.cacheSchema}; ${ctx.name} build --force to recreate)`);\n console.log(`lexical: ${result.lexicalReady ? 'ready' : `not ready (${result.lexicalError})`}`);\n console.log(`docs: ${result.docs}${result.unparseableFrontmatter > 0 ? ` (${result.unparseableFrontmatter} with unparseable frontmatter: WHERE _parse_error IS NOT NULL)` : ''}`);\n console.log('');\n console.log(featuresLine(features));\n // One authoritative block, off states included: an absent model reads as a degraded search,\n // not as an empty corpus.\n if (!e) console.log('embed: off (no preset asks for vectors)');\n else {\n console.log(`embed: ${e.provider} ${e.model}`);\n if (e.provider === 'static') console.log(` model: ${modelDir(e.model)} (${hasModel ? 'present' : `missing, ${isDownloadable(e.model) ? `fetches when build, watch, or a vector query needs it; run \\`${ctx.name} download\\` to prefetch` : `no ${MODEL_FILENAMES} in that directory`}`})`);\n if (declaredLanguages && languagesSource === 'config') console.log(` languages: ${declaredLanguages.join(', ')} (declared in embed.languages)`);\n else if (declaredLanguages && languagesSource === 'card') console.log(` languages: ${declaredLanguages.join(', ')} (declared by the model card)`);\n else if (languagesState === 'none') console.log(' languages: none declared by the model card');\n else if (languagesState === 'unresolved') console.log(` languages: unresolved (model card unreachable; run \\`${ctx.name} download\\`)`);\n // Cohere defaults to api.cohere.com with no url in the config; show it anyway so the\n // reachability probe below has something to name.\n if (e.url || reachable !== null) {\n const shown = e.url ? redactUrl(e.url) : 'https://api.cohere.com (default)';\n console.log(` url: ${shown}${reachable === null ? '' : reachable ? ' (reachable)' : ' (unreachable)'}`);\n }\n if (keyEnv) console.log(` key: env ${keyEnv.name} (${keyEnv.set ? 'set' : 'NOT SET'})`);\n if (!hasModel) console.log(' vectors: unavailable until the model is present; semantic queries fail, while lexical-only presets remain usable');\n else if (vectors) console.log(` vectors: ${vectors.embedded} embedded, ${vectors.pending} pending${vectors.pending > 0 ? ` (run \\`${ctx.name} build\\` to prepare all configured vectors)` : ''}`);\n if (detectedLanguages) {\n const total = Object.values(detectedLanguages).reduce((a, b) => a + b, 0);\n const breakdown = Object.entries(detectedLanguages)\n .sort((a, b) => b[1] - a[1])\n .map(([code, n]) => `${code} ${Math.round((n / total) * 100)}%`)\n .join(', ');\n console.log(` detected: ${breakdown} (${total} chunks classified)`);\n }\n }\n console.log('');\n for (const line of presetsLines(presets)) console.log(line);\n console.log('');\n console.log(`queries: ${result.queries} saved (${ctx.name} --list)`);\n const pid = result.watcherPid ? `pid ${result.watcherPid}, ` : '';\n console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : `watcher: ${pid}last heartbeat ${result.watcherHeartbeatSecondsAgo}s ago`);\n for (const [key, value] of Object.entries(result.engine)) console.log(`${`${store.name}:`.padEnd(10)}${key} ${value}`);\n }\n } finally {\n await store.close();\n }\n};\nexport default status;\n"],"names":["dirname","join","presetCoverage","embedConfig","featureStates","STATE_DIR","SUPPORTED_CONFIG_VERSION","languageDistribution","probeReachable","isDownloadable","MODEL_FILENAMES","modelDir","modelPresent","readLanguages","SenseError","featuresLine","presetsLines","stringifyJson","docCount","getMeta","lexicalReadiness","openStore","storeFilename","readWatchClaim","USAGE","CONFIG","FORMAT","formatOf","parse","printWarnings","vectorState","store","stmt","prepare","get","parseErrorCount","n","redactUrl","url","parsed","URL","username","password","toString","replace","embedReachable","e","provider","base","languagesInfo","languages","state","source","model","cardLanguages","undefined","length","status","ctx","values","argv","name","format","cfg","resolveConfig","config","writeMigration","lexical","opened","build","err","code","configDir","rootDir","baseDir","dbPath","watcher","result","configPath","configVersion","migratedFrom","unknownConfigKeys","unknownKeys","tree","treeRoot","cache","db","indexReady","indexError","message","lexicalReady","ready","lexicalError","error","watcherPid","String","pid","watcherHeartbeatSecondsAgo","Math","round","Date","now","heartbeatMs","console","log","migrated","warnings","process","features","hasModel","reachable","vectors","presets","declaredLanguages","languagesState","languagesSource","detectedLanguages","cacheSchema","engine","engineStatus","keyEnv","key","set","env","docs","unparseableFrontmatter","on","featuresOff","off","embed","dir","downloaded","queries","Object","keys","shown","embedded","pending","total","reduce","a","b","breakdown","entries","sort","map","line","value","padEnd","close"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/types.ts"],"sourcesContent":["import type { LoadConfigOptions, ResolvedConfig } from '../config/index.ts';\n\n// Handed to every command; each command parses its own argv via shared.ts's `parse`.\nexport interface Ctx {\n name: string;\n argv: string[]; // argv after the command word\n resolveConfig(configPath?: string, options?: LoadConfigOptions & { query?: boolean }): ResolvedConfig;\n usageError(message: string): never;\n}\n\nexport type Command = (ctx: Ctx) => Promise<void> | void;\n"],"names":[],"mappings":"AAUA,WAAyD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/open-source/ai/sensemaking/src/cli/watch.ts"],"sourcesContent":["import type { WatchEvent } from '../watch.ts';\nimport { runWatch } from '../watch.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, parse, printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst watch: Command = async (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.watch}`, { force: { type: 'boolean', default: false }, ...CONFIG });\n await runWatch(ctx.resolveConfig(values.config as string | undefined), {\n force: values.force as boolean,\n onEvent: (event: WatchEvent) => {\n if (event.type === 'started') {\n console.log(`${ctx.name} watch: watching ${event.rootDir}`);\n console.log(`${ctx.name} watch: db ${event.dbPath}`);\n } else if (event.type === 'reconciled') {\n printWarnings(event.warnings);\n if (event.parsed > 0) console.log(`${ctx.name} watch: reconciled, ${event.parsed} file(s) reparsed (${event.total} total)`);\n } else {\n console.error(`${ctx.name} watch: reconcile error: ${event.message}`);\n }\n },\n });\n};\nexport default watch;\n"],"names":["runWatch","USAGE","CONFIG","parse","printWarnings","watch","ctx","values","argv","name","force","type","default","resolveConfig","config","onEvent","event","console","log","rootDir","dbPath","warnings","parsed","total","error","message"],"mappings":"AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,EAAEC,KAAK,EAAEC,aAAa,QAAQ,cAAc;AAG3D,MAAMC,QAAiB,OAAOC;IAC5B,MAAM,EAAEC,MAAM,EAAE,GAAGJ,MAAMG,IAAIE,IAAI,EAAE,CAAC,OAAO,EAAEF,IAAIG,IAAI,CAAC,CAAC,EAAER,MAAMI,KAAK,EAAE,EAAE;QAAEK,OAAO;YAAEC,MAAM;YAAWC,SAAS;QAAM;QAAG,GAAGV,MAAM;IAAC;IAChI,MAAMF,SAASM,IAAIO,aAAa,CAACN,OAAOO,MAAM,GAAyB;QACrEJ,OAAOH,OAAOG,KAAK;QACnBK,SAAS,CAACC;YACR,IAAIA,MAAML,IAAI,KAAK,WAAW;gBAC5BM,QAAQC,GAAG,CAAC,GAAGZ,IAAIG,IAAI,CAAC,iBAAiB,EAAEO,MAAMG,OAAO,EAAE;gBAC1DF,QAAQC,GAAG,CAAC,GAAGZ,IAAIG,IAAI,CAAC,WAAW,EAAEO,MAAMI,MAAM,EAAE;YACrD,OAAO,IAAIJ,MAAML,IAAI,KAAK,cAAc;gBACtCP,cAAcY,MAAMK,QAAQ;gBAC5B,IAAIL,MAAMM,MAAM,GAAG,GAAGL,QAAQC,GAAG,CAAC,GAAGZ,IAAIG,IAAI,CAAC,oBAAoB,EAAEO,MAAMM,MAAM,CAAC,mBAAmB,EAAEN,MAAMO,KAAK,CAAC,OAAO,CAAC;YAC5H,OAAO;gBACLN,QAAQO,KAAK,CAAC,GAAGlB,IAAIG,IAAI,CAAC,yBAAyB,EAAEO,MAAMS,OAAO,EAAE;YACtE;QACF;IACF;AACF;AACA,eAAepB,MAAM"}
|