sensemaking 0.9.0 → 0.9.2

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.
Files changed (68) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/cli/check.js +34 -3
  3. package/dist/cjs/cli/check.js.map +1 -1
  4. package/dist/cjs/cli/index.d.cts +11 -0
  5. package/dist/cjs/cli/index.d.ts +11 -0
  6. package/dist/cjs/cli/index.js +22 -3
  7. package/dist/cjs/cli/index.js.map +1 -1
  8. package/dist/cjs/cli/init.js +3 -0
  9. package/dist/cjs/cli/init.js.map +1 -1
  10. package/dist/cjs/cli/map.js +33 -2
  11. package/dist/cjs/cli/map.js.map +1 -1
  12. package/dist/cjs/cli/named.d.cts +1 -1
  13. package/dist/cjs/cli/named.d.ts +1 -1
  14. package/dist/cjs/cli/named.js +46 -12
  15. package/dist/cjs/cli/named.js.map +1 -1
  16. package/dist/cjs/cli/peek.js +36 -4
  17. package/dist/cjs/cli/peek.js.map +1 -1
  18. package/dist/cjs/cli/query.js +35 -3
  19. package/dist/cjs/cli/query.js.map +1 -1
  20. package/dist/cjs/cli/rebuild.js +31 -1
  21. package/dist/cjs/cli/rebuild.js.map +1 -1
  22. package/dist/cjs/cli/search.js +42 -10
  23. package/dist/cjs/cli/search.js.map +1 -1
  24. package/dist/cjs/cli/shared.d.cts +13 -2
  25. package/dist/cjs/cli/shared.d.ts +13 -2
  26. package/dist/cjs/cli/shared.js +139 -7
  27. package/dist/cjs/cli/shared.js.map +1 -1
  28. package/dist/cjs/cli/status.js +5 -2
  29. package/dist/cjs/cli/status.js.map +1 -1
  30. package/dist/cjs/cli/types.d.cts +2 -12
  31. package/dist/cjs/cli/types.d.ts +2 -12
  32. package/dist/cjs/cli/watch.js +38 -2
  33. package/dist/cjs/cli/watch.js.map +1 -1
  34. package/dist/cjs/cli.js +113 -121
  35. package/dist/cjs/cli.js.map +1 -1
  36. package/dist/esm/cli/check.js +9 -3
  37. package/dist/esm/cli/check.js.map +1 -1
  38. package/dist/esm/cli/index.d.ts +11 -0
  39. package/dist/esm/cli/index.js +14 -0
  40. package/dist/esm/cli/index.js.map +1 -1
  41. package/dist/esm/cli/init.js +3 -0
  42. package/dist/esm/cli/init.js.map +1 -1
  43. package/dist/esm/cli/map.js +11 -3
  44. package/dist/esm/cli/map.js.map +1 -1
  45. package/dist/esm/cli/named.d.ts +1 -1
  46. package/dist/esm/cli/named.js +23 -13
  47. package/dist/esm/cli/named.js.map +1 -1
  48. package/dist/esm/cli/peek.js +12 -5
  49. package/dist/esm/cli/peek.js.map +1 -1
  50. package/dist/esm/cli/query.js +11 -4
  51. package/dist/esm/cli/query.js.map +1 -1
  52. package/dist/esm/cli/rebuild.js +6 -2
  53. package/dist/esm/cli/rebuild.js.map +1 -1
  54. package/dist/esm/cli/search.js +18 -10
  55. package/dist/esm/cli/search.js.map +1 -1
  56. package/dist/esm/cli/shared.d.ts +13 -2
  57. package/dist/esm/cli/shared.js +74 -7
  58. package/dist/esm/cli/shared.js.map +1 -1
  59. package/dist/esm/cli/status.js +9 -3
  60. package/dist/esm/cli/status.js.map +1 -1
  61. package/dist/esm/cli/types.d.ts +2 -12
  62. package/dist/esm/cli/types.js.map +1 -1
  63. package/dist/esm/cli/watch.js +11 -3
  64. package/dist/esm/cli/watch.js.map +1 -1
  65. package/dist/esm/cli.js +82 -95
  66. package/dist/esm/cli.js.map +1 -1
  67. package/package.json +1 -1
  68. package/skills/sense/SKILL.md +3 -1
@@ -9,9 +9,39 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _dbts = require("../db.js");
12
+ var _indexts = require("./index.js");
12
13
  var _sharedts = require("./shared.js");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value: value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true
21
+ });
22
+ } else {
23
+ obj[key] = value;
24
+ }
25
+ return obj;
26
+ }
27
+ function _object_spread(target) {
28
+ for(var i = 1; i < arguments.length; i++){
29
+ var source = arguments[i] != null ? arguments[i] : {};
30
+ var ownKeys = Object.keys(source);
31
+ if (typeof Object.getOwnPropertySymbols === "function") {
32
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
33
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
34
+ }));
35
+ }
36
+ ownKeys.forEach(function(key) {
37
+ _define_property(target, key, source[key]);
38
+ });
39
+ }
40
+ return target;
41
+ }
13
42
  var rebuildCmd = function rebuildCmd(ctx) {
14
- var result = (0, _dbts.rebuild)(ctx.resolveConfig());
43
+ var values = (0, _sharedts.parse)(ctx.argv, "usage: ".concat(ctx.name, " ").concat(_indexts.USAGE.rebuild), _object_spread({}, _sharedts.CONFIG)).values;
44
+ var result = (0, _dbts.rebuild)(ctx.resolveConfig(values.config));
15
45
  (0, _sharedts.printWarnings)(result.warnings);
16
46
  console.log("rebuilt: ".concat((0, _dbts.docCount)(result.db), " docs"));
17
47
  result.db.close();
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/rebuild.ts"],"sourcesContent":["import { docCount, rebuild } from '../db.ts';\nimport { printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst rebuildCmd: Command = (ctx) => {\n const result = rebuild(ctx.resolveConfig());\n printWarnings(result.warnings);\n console.log(`rebuilt: ${docCount(result.db)} docs`);\n result.db.close();\n};\nexport default rebuildCmd;\n"],"names":["rebuildCmd","ctx","result","rebuild","resolveConfig","printWarnings","warnings","console","log","docCount","db","close"],"mappings":";;;;+BAUA;;;eAAA;;;oBAVkC;wBACJ;AAG9B,IAAMA,aAAsB,oBAACC;IAC3B,IAAMC,SAASC,IAAAA,aAAO,EAACF,IAAIG,aAAa;IACxCC,IAAAA,uBAAa,EAACH,OAAOI,QAAQ;IAC7BC,QAAQC,GAAG,CAAC,AAAC,YAA+B,OAApBC,IAAAA,cAAQ,EAACP,OAAOQ,EAAE,GAAE;IAC5CR,OAAOQ,EAAE,CAACC,KAAK;AACjB;IACA,WAAeX"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/rebuild.ts"],"sourcesContent":["import { docCount, rebuild } from '../db.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, parse, printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst rebuildCmd: Command = (ctx) => {\n const { values } = parse(ctx.argv, `usage: ${ctx.name} ${USAGE.rebuild}`, { ...CONFIG });\n const result = rebuild(ctx.resolveConfig(values.config as string | undefined));\n printWarnings(result.warnings);\n console.log(`rebuilt: ${docCount(result.db)} docs`);\n result.db.close();\n};\nexport default rebuildCmd;\n"],"names":["rebuildCmd","ctx","values","parse","argv","USAGE","name","rebuild","CONFIG","result","resolveConfig","config","printWarnings","warnings","console","log","docCount","db","close"],"mappings":";;;;+BAYA;;;eAAA;;;oBAZkC;uBACZ;wBACuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG7C,IAAMA,aAAsB,oBAACC;IAC3B,IAAM,AAAEC,SAAWC,IAAAA,eAAK,EAACF,IAAIG,IAAI,EAAE,AAAC,UAAqBC,OAAZJ,IAAIK,IAAI,EAAC,KAAiB,OAAdD,cAAK,CAACE,OAAO,GAAI,mBAAKC,gBAAM,GAA7EN;IACR,IAAMO,SAASF,IAAAA,aAAO,EAACN,IAAIS,aAAa,CAACR,OAAOS,MAAM;IACtDC,IAAAA,uBAAa,EAACH,OAAOI,QAAQ;IAC7BC,QAAQC,GAAG,CAAC,AAAC,YAA+B,OAApBC,IAAAA,cAAQ,EAACP,OAAOQ,EAAE,GAAE;IAC5CR,OAAOQ,EAAE,CAACC,KAAK;AACjB;IACA,WAAelB"}
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _commandsts = require("../commands.js");
12
12
  var _outputts = require("../output.js");
13
+ var _indexts = require("./index.js");
13
14
  var _sharedts = require("./shared.js");
14
15
  function _array_like_to_array(arr, len) {
15
16
  if (len == null || len > arr.length) len = arr.length;
@@ -48,6 +49,19 @@ function _async_to_generator(fn) {
48
49
  });
49
50
  };
50
51
  }
52
+ function _define_property(obj, key, value) {
53
+ if (key in obj) {
54
+ Object.defineProperty(obj, key, {
55
+ value: value,
56
+ enumerable: true,
57
+ configurable: true,
58
+ writable: true
59
+ });
60
+ } else {
61
+ obj[key] = value;
62
+ }
63
+ return obj;
64
+ }
51
65
  function _iterable_to_array_limit(arr, i) {
52
66
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53
67
  if (_i == null) return;
@@ -75,6 +89,21 @@ function _iterable_to_array_limit(arr, i) {
75
89
  function _non_iterable_rest() {
76
90
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
91
  }
92
+ function _object_spread(target) {
93
+ for(var i = 1; i < arguments.length; i++){
94
+ var source = arguments[i] != null ? arguments[i] : {};
95
+ var ownKeys = Object.keys(source);
96
+ if (typeof Object.getOwnPropertySymbols === "function") {
97
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
98
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
99
+ }));
100
+ }
101
+ ownKeys.forEach(function(key) {
102
+ _define_property(target, key, source[key]);
103
+ });
104
+ }
105
+ return target;
106
+ }
78
107
  function _sliced_to_array(arr, i) {
79
108
  return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
80
109
  }
@@ -187,16 +216,19 @@ function _ts_generator(thisArg, body) {
187
216
  }
188
217
  var searchCmd = function searchCmd(ctx) {
189
218
  return _async_to_generator(function() {
190
- var _ctx_rest, terms, k;
219
+ var usage, _parse, values, positionals, _positionals, terms, k, format;
191
220
  return _ts_generator(this, function(_state) {
192
221
  switch(_state.label){
193
222
  case 0:
194
- _ctx_rest = _sliced_to_array(ctx.rest, 1), terms = _ctx_rest[0];
195
- if (!terms) ctx.usageError("usage: ".concat(ctx.name, ' search "<terms>" [--preset name] [--include glob ...] [--where "<sql>"] [--k n] [--lexical]'));
196
- k = (0, _sharedts.parseK)(ctx);
223
+ usage = "usage: ".concat(ctx.name, " ").concat(_indexts.USAGE.search);
224
+ _parse = (0, _sharedts.parse)(ctx.argv, usage, _object_spread({}, _sharedts.SEARCH_FLAGS, _sharedts.FORMAT, _sharedts.CONFIG)), values = _parse.values, positionals = _parse.positionals;
225
+ _positionals = _sliced_to_array(positionals, 1), terms = _positionals[0];
226
+ if (!terms) ctx.usageError(usage);
227
+ k = (0, _sharedts.parseK)(values.k, ctx.usageError);
228
+ format = (0, _sharedts.formatOf)(values);
197
229
  return [
198
230
  4,
199
- (0, _sharedts.withDb)(ctx, function(db, cfg) {
231
+ (0, _sharedts.withDb)(ctx, values.config, function(db, cfg) {
200
232
  return _async_to_generator(function() {
201
233
  return _ts_generator(this, function(_state) {
202
234
  switch(_state.label){
@@ -205,10 +237,10 @@ var searchCmd = function searchCmd(ctx) {
205
237
  4,
206
238
  (0, _commandsts.search)(db, cfg, terms, {
207
239
  k: k,
208
- where: ctx.values.where,
209
- preset: ctx.values.preset,
210
- include: ctx.values.include,
211
- semantic: ctx.values.lexical ? false : undefined
240
+ where: values.where,
241
+ preset: values.preset,
242
+ include: values.include,
243
+ semantic: values.lexical ? false : undefined
212
244
  })
213
245
  ];
214
246
  case 1:
@@ -216,7 +248,7 @@ var searchCmd = function searchCmd(ctx) {
216
248
  2,
217
249
  _outputts.printRows.apply(void 0, [
218
250
  _state.sent(),
219
- ctx.format
251
+ format
220
252
  ])
221
253
  ];
222
254
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/search.ts"],"sourcesContent":["import { search } from '../commands.ts';\nimport { printRows } from '../output.ts';\nimport { parseK, withDb } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst searchCmd: Command = async (ctx) => {\n const [terms] = ctx.rest;\n if (!terms) ctx.usageError(`usage: ${ctx.name} search \"<terms>\" [--preset name] [--include glob ...] [--where \"<sql>\"] [--k n] [--lexical]`);\n const k = parseK(ctx);\n await withDb(ctx, async (db, cfg) => printRows(await search(db, cfg, terms, { k, where: ctx.values.where, preset: ctx.values.preset, include: ctx.values.include, semantic: ctx.values.lexical ? false : undefined }), ctx.format));\n};\nexport default searchCmd;\n"],"names":["searchCmd","ctx","terms","k","rest","usageError","name","parseK","withDb","db","cfg","search","where","values","preset","include","semantic","lexical","undefined","printRows","format"],"mappings":";;;;+BAWA;;;eAAA;;;0BAXuB;wBACG;wBACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG/B,IAAMA,YAAqB,mBAAOC;;YAChBA,WAATC,OAEDC;;;;oBAFUF,6BAAAA,IAAIG,IAAI,MAAjBF,QAASD;oBAChB,IAAI,CAACC,OAAOD,IAAII,UAAU,CAAC,AAAC,UAAkB,OAATJ,IAAIK,IAAI,EAAC;oBACxCH,IAAII,IAAAA,gBAAM,EAACN;oBACjB;;wBAAMO,IAAAA,gBAAM,EAACP,KAAK,SAAOQ,IAAIC;;;;;4CAAkB;;gDAAMC,IAAAA,kBAAM,EAACF,IAAIC,KAAKR,OAAO;oDAAEC,GAAAA;oDAAGS,OAAOX,IAAIY,MAAM,CAACD,KAAK;oDAAEE,QAAQb,IAAIY,MAAM,CAACC,MAAM;oDAAEC,SAASd,IAAIY,MAAM,CAACE,OAAO;oDAAEC,UAAUf,IAAIY,MAAM,CAACI,OAAO,GAAG,QAAQC;gDAAU;;;;;gDAA9KC,mBAAS;oDAAC;oDAAwKlB,IAAImB,MAAM;;;;;;;;;oBAAjO;;;;;;IACF;;IACA,WAAepB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/search.ts"],"sourcesContent":["import { search } from '../commands.ts';\nimport { printRows } from '../output.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, formatOf, parse, parseK, SEARCH_FLAGS, 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, ...FORMAT, ...CONFIG });\n const [terms] = positionals;\n if (!terms) ctx.usageError(usage);\n const k = parseK(values.k as string | undefined, ctx.usageError);\n const format = formatOf(values);\n await withDb(ctx, values.config as string | undefined, async (db, cfg) => printRows(await search(db, cfg, terms, { k, where: values.where as string | undefined, preset: values.preset as string | undefined, include: values.include as string[] | undefined, semantic: values.lexical ? false : undefined }), format));\n};\nexport default searchCmd;\n"],"names":["searchCmd","ctx","usage","parse","values","positionals","terms","k","format","USAGE","name","search","argv","SEARCH_FLAGS","FORMAT","CONFIG","usageError","parseK","formatOf","withDb","config","db","cfg","where","preset","include","semantic","lexical","undefined","printRows"],"mappings":";;;;+BAeA;;;eAAA;;;0BAfuB;wBACG;uBACJ;wBACwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG9E,IAAMA,YAAqB,mBAAOC;;YAC1BC,OAC0BC,QAAxBC,QAAQC,aACAA,cAATC,OAEDC,GACAC;;;;oBALAN,QAAQ,AAAC,UAAqBO,OAAZR,IAAIS,IAAI,EAAC,KAAgB,OAAbD,cAAK,CAACE,MAAM;oBAChBR,SAAAA,IAAAA,eAAK,EAACF,IAAIW,IAAI,EAAEV,OAAO,mBAAKW,sBAAY,EAAKC,gBAAM,EAAKC,gBAAM,IAAtFX,SAAwBD,OAAxBC,QAAQC,cAAgBF,OAAhBE;oBACAA,gCAAAA,iBAATC,QAASD;oBAChB,IAAI,CAACC,OAAOL,IAAIe,UAAU,CAACd;oBACrBK,IAAIU,IAAAA,gBAAM,EAACb,OAAOG,CAAC,EAAwBN,IAAIe,UAAU;oBACzDR,SAASU,IAAAA,kBAAQ,EAACd;oBACxB;;wBAAMe,IAAAA,gBAAM,EAAClB,KAAKG,OAAOgB,MAAM,EAAwB,SAAOC,IAAIC;;;;;4CAAkB;;gDAAMX,IAAAA,kBAAM,EAACU,IAAIC,KAAKhB,OAAO;oDAAEC,GAAAA;oDAAGgB,OAAOnB,OAAOmB,KAAK;oDAAwBC,QAAQpB,OAAOoB,MAAM;oDAAwBC,SAASrB,OAAOqB,OAAO;oDAA0BC,UAAUtB,OAAOuB,OAAO,GAAG,QAAQC;gDAAU;;;;;gDAAlOC,mBAAS;oDAAC;oDAA4NrB;;;;;;;;;oBAAhT;;;;;;IACF;;IACA,WAAeR"}
@@ -1,7 +1,18 @@
1
+ import type { ParseArgsOptionsConfig } from 'node:util';
1
2
  import type { ResolvedConfig } from '../config.js';
2
3
  import type { OpenResult } from '../db.js';
3
4
  import type { Ctx } from './types.js';
4
- export declare function parseK(ctx: Ctx): number | undefined;
5
+ export declare const FORMAT: ParseArgsOptionsConfig;
6
+ export declare const CONFIG: ParseArgsOptionsConfig;
7
+ export declare const SEARCH_FLAGS: ParseArgsOptionsConfig;
8
+ type Values = Record<string, string | boolean | string[] | undefined>;
9
+ export declare function formatOf(values: Values): 'table' | 'json';
10
+ export declare function parse(argv: string[], usage: string, options: ParseArgsOptionsConfig): {
11
+ values: Values;
12
+ positionals: string[];
13
+ };
14
+ export declare function parseK(k: string | undefined, usageError: (message: string) => never): number | undefined;
5
15
  export declare function printWarnings(warnings: string[]): void;
6
- export declare function withDb(ctx: Ctx, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void>;
16
+ export declare function withDb(ctx: Ctx, configPath: string | undefined, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void>;
7
17
  export declare function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: 'table' | 'json', label: string): void;
18
+ export {};
@@ -1,7 +1,18 @@
1
+ import type { ParseArgsOptionsConfig } from 'node:util';
1
2
  import type { ResolvedConfig } from '../config.js';
2
3
  import type { OpenResult } from '../db.js';
3
4
  import type { Ctx } from './types.js';
4
- export declare function parseK(ctx: Ctx): number | undefined;
5
+ export declare const FORMAT: ParseArgsOptionsConfig;
6
+ export declare const CONFIG: ParseArgsOptionsConfig;
7
+ export declare const SEARCH_FLAGS: ParseArgsOptionsConfig;
8
+ type Values = Record<string, string | boolean | string[] | undefined>;
9
+ export declare function formatOf(values: Values): 'table' | 'json';
10
+ export declare function parse(argv: string[], usage: string, options: ParseArgsOptionsConfig): {
11
+ values: Values;
12
+ positionals: string[];
13
+ };
14
+ export declare function parseK(k: string | undefined, usageError: (message: string) => never): number | undefined;
5
15
  export declare function printWarnings(warnings: string[]): void;
6
- export declare function withDb(ctx: Ctx, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void>;
16
+ export declare function withDb(ctx: Ctx, configPath: string | undefined, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void>;
7
17
  export declare function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: 'table' | 'json', label: string): void;
18
+ export {};
@@ -9,6 +9,21 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ get CONFIG () {
13
+ return CONFIG;
14
+ },
15
+ get FORMAT () {
16
+ return FORMAT;
17
+ },
18
+ get SEARCH_FLAGS () {
19
+ return SEARCH_FLAGS;
20
+ },
21
+ get formatOf () {
22
+ return formatOf;
23
+ },
24
+ get parse () {
25
+ return parse;
26
+ },
12
27
  get parseK () {
13
28
  return parseK;
14
29
  },
@@ -22,6 +37,7 @@ _export(exports, {
22
37
  return withDb;
23
38
  }
24
39
  });
40
+ var _nodeutil = require("node:util");
25
41
  var _dbts = require("../db.js");
26
42
  var _outputts = require("../output.js");
27
43
  var _searcherrorts = require("../search-error.js");
@@ -62,12 +78,64 @@ function _async_to_generator(fn) {
62
78
  });
63
79
  };
64
80
  }
81
+ function _define_property(obj, key, value) {
82
+ if (key in obj) {
83
+ Object.defineProperty(obj, key, {
84
+ value: value,
85
+ enumerable: true,
86
+ configurable: true,
87
+ writable: true
88
+ });
89
+ } else {
90
+ obj[key] = value;
91
+ }
92
+ return obj;
93
+ }
65
94
  function _iterable_to_array(iter) {
66
95
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
67
96
  }
68
97
  function _non_iterable_spread() {
69
98
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
70
99
  }
100
+ function _object_spread(target) {
101
+ for(var i = 1; i < arguments.length; i++){
102
+ var source = arguments[i] != null ? arguments[i] : {};
103
+ var ownKeys = Object.keys(source);
104
+ if (typeof Object.getOwnPropertySymbols === "function") {
105
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
106
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
107
+ }));
108
+ }
109
+ ownKeys.forEach(function(key) {
110
+ _define_property(target, key, source[key]);
111
+ });
112
+ }
113
+ return target;
114
+ }
115
+ function ownKeys(object, enumerableOnly) {
116
+ var keys = Object.keys(object);
117
+ if (Object.getOwnPropertySymbols) {
118
+ var symbols = Object.getOwnPropertySymbols(object);
119
+ if (enumerableOnly) {
120
+ symbols = symbols.filter(function(sym) {
121
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
122
+ });
123
+ }
124
+ keys.push.apply(keys, symbols);
125
+ }
126
+ return keys;
127
+ }
128
+ function _object_spread_props(target, source) {
129
+ source = source != null ? source : {};
130
+ if (Object.getOwnPropertyDescriptors) {
131
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
132
+ } else {
133
+ ownKeys(Object(source)).forEach(function(key) {
134
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
135
+ });
136
+ }
137
+ return target;
138
+ }
71
139
  function _to_consumable_array(arr) {
72
140
  return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
73
141
  }
@@ -178,11 +246,75 @@ function _ts_generator(thisArg, body) {
178
246
  };
179
247
  }
180
248
  }
181
- function parseK(ctx) {
182
- if (ctx.values.k === undefined) return undefined;
183
- var k = Number(ctx.values.k);
184
- if (!Number.isInteger(k) || k <= 0) ctx.usageError('--k expects a positive integer, got "'.concat(ctx.values.k, '"'));
185
- return k;
249
+ var FORMAT = {
250
+ format: {
251
+ type: 'string',
252
+ default: 'table'
253
+ }
254
+ };
255
+ var CONFIG = {
256
+ config: {
257
+ type: 'string'
258
+ }
259
+ };
260
+ var SEARCH_FLAGS = {
261
+ where: {
262
+ type: 'string'
263
+ },
264
+ k: {
265
+ type: 'string'
266
+ },
267
+ preset: {
268
+ type: 'string'
269
+ },
270
+ include: {
271
+ type: 'string',
272
+ multiple: true
273
+ },
274
+ lexical: {
275
+ type: 'boolean',
276
+ default: false
277
+ }
278
+ };
279
+ function formatOf(values) {
280
+ return values.format === 'json' ? 'json' : 'table';
281
+ }
282
+ function parse(argv, usage, options) {
283
+ var values;
284
+ var positionals;
285
+ try {
286
+ var ref;
287
+ ref = (0, _nodeutil.parseArgs)({
288
+ args: argv,
289
+ options: _object_spread_props(_object_spread({}, options), {
290
+ help: {
291
+ type: 'boolean',
292
+ default: false,
293
+ short: 'h'
294
+ }
295
+ }),
296
+ strict: true,
297
+ allowPositionals: true
298
+ }), values = ref.values, positionals = ref.positionals, ref;
299
+ } catch (err) {
300
+ console.error(err.message);
301
+ console.error(usage);
302
+ process.exit(2);
303
+ }
304
+ if (values.help) {
305
+ console.log(usage);
306
+ process.exit(0);
307
+ }
308
+ return {
309
+ values: values,
310
+ positionals: positionals
311
+ };
312
+ }
313
+ function parseK(k, usageError) {
314
+ if (k === undefined) return undefined;
315
+ var parsed = Number(k);
316
+ if (!Number.isInteger(parsed) || parsed <= 0) usageError('--k expects a positive integer, got "'.concat(k, '"'));
317
+ return parsed;
186
318
  }
187
319
  function printWarnings(warnings) {
188
320
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
@@ -206,13 +338,13 @@ function printWarnings(warnings) {
206
338
  }
207
339
  }
208
340
  }
209
- function withDb(ctx, fn) {
341
+ function withDb(ctx, configPath, fn) {
210
342
  return _async_to_generator(function() {
211
343
  var cfg, _open, db, warnings;
212
344
  return _ts_generator(this, function(_state) {
213
345
  switch(_state.label){
214
346
  case 0:
215
- cfg = ctx.resolveConfig();
347
+ cfg = ctx.resolveConfig(configPath);
216
348
  _open = (0, _dbts.open)(cfg), db = _open.db, warnings = _open.warnings;
217
349
  printWarnings(warnings);
218
350
  _state.label = 1;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/shared.ts"],"sourcesContent":["import type { ResolvedConfig } from '../config.ts';\nimport type { OpenResult } from '../db.ts';\nimport { open } from '../db.ts';\nimport type { Row } from '../output.ts';\nimport { printRows } from '../output.ts';\nimport { searchError } from '../search-error.ts';\nimport type { Ctx } from './types.ts';\n\n// --k must be a positive integer: SQLite reads a bound LIMIT of -1 as \"unlimited\" and 0 as\n// \"nothing\", and parseInt would silently truncate \"5.9\" -- all three are caller mistakes\n// worth a usage error, matching the config-level SavedSearch validation.\nexport function parseK(ctx: Ctx): number | undefined {\n if (ctx.values.k === undefined) return undefined;\n const k = Number(ctx.values.k);\n if (!Number.isInteger(k) || k <= 0) ctx.usageError(`--k expects a positive integer, got \"${ctx.values.k}\"`);\n return k;\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 async function withDb(ctx: Ctx, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void> {\n const cfg = ctx.resolveConfig();\n const { db, warnings } = open(cfg);\n printWarnings(warnings);\n try {\n await fn(db, cfg);\n } finally {\n db.close();\n }\n}\n\n// An unbound `?` silently binds NULL, so mismatched param counts fail loudly instead.\nexport function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: 'table' | 'json', label: string): 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 const { db, warnings } = open(cfg);\n printWarnings(warnings);\n let rows: Row[];\n try {\n rows = db.prepare(sql).all(...params) as Row[];\n } catch (err) {\n db.close();\n // A saved query or ad-hoc SQL can carry `content MATCH ?` too, so the same FTS5\n // punctuation trap applies -- the bound parameters are the search terms there. SQL\n // without MATCH gets its error verbatim; search advice on a plain typo would mislead.\n if (/\\bMATCH\\b/i.test(sql)) throw searchError(err as Error, params.join(' '));\n throw err;\n }\n printRows(rows, format);\n db.close();\n}\n"],"names":["parseK","printWarnings","runSql","withDb","ctx","values","k","undefined","Number","isInteger","usageError","warnings","w","console","warn","fn","cfg","open","db","resolveConfig","close","sql","params","format","label","placeholderCount","match","length","error","process","exit","rows","prepare","all","err","test","searchError","join","printRows"],"mappings":";;;;;;;;;;;QAWgBA;eAAAA;;QASAC;eAAAA;;QAgBAC;eAAAA;;QAZMC;eAAAA;;;oBAtBD;wBAEK;6BACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMrB,SAASH,OAAOI,GAAQ;IAC7B,IAAIA,IAAIC,MAAM,CAACC,CAAC,KAAKC,WAAW,OAAOA;IACvC,IAAMD,IAAIE,OAAOJ,IAAIC,MAAM,CAACC,CAAC;IAC7B,IAAI,CAACE,OAAOC,SAAS,CAACH,MAAMA,KAAK,GAAGF,IAAIM,UAAU,CAAC,AAAC,wCAAoD,OAAbN,IAAIC,MAAM,CAACC,CAAC,EAAC;IACxG,OAAOA;AACT;AAIO,SAASL,cAAcU,QAAkB;QACzC,kCAAA,2BAAA;;QAAL,QAAK,YAAWA,6BAAX,SAAA,6BAAA,QAAA,yBAAA;YAAA,IAAMC,IAAN;YAAqBC,QAAQC,IAAI,CAACF;;;QAAlC;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;AACP;AAEO,SAAeT,OAAOC,GAAQ,EAAEW,EAAuE;;YACtGC,KACmBC,OAAjBC,IAAIP;;;;oBADNK,MAAMZ,IAAIe,aAAa;oBACJF,QAAAA,IAAAA,UAAI,EAACD,MAAtBE,KAAiBD,MAAjBC,IAAIP,WAAaM,MAAbN;oBACZV,cAAcU;;;;;;;;;oBAEZ;;wBAAMI,GAAGG,IAAIF;;;oBAAb;;;;;;oBAEAE,GAAGE,KAAK;;;;;;;;;;IAEZ;;AAGO,SAASlB,OAAOc,GAAmB,EAAEK,GAAW,EAAEC,MAAgB,EAAEC,MAAwB,EAAEC,KAAa;QACtFH;IAA1B,IAAMI,mBAAmB,EAACJ,aAAAA,IAAIK,KAAK,CAAC,oBAAVL,wBAAAA,aAAoB,EAAE,EAAEM,MAAM;IACxD,IAAIL,OAAOK,MAAM,KAAKF,kBAAkB;QACtCZ,QAAQe,KAAK,CAAC,AAAC,GAAmBH,OAAjBD,OAAM,aAAiDF,OAAtCG,kBAAiB,uBAAmC,OAAdH,OAAOK,MAAM;QACrFE,QAAQC,IAAI,CAAC;IACf;IACA,IAAyBb,QAAAA,IAAAA,UAAI,EAACD,MAAtBE,KAAiBD,MAAjBC,IAAIP,WAAaM,MAAbN;IACZV,cAAcU;IACd,IAAIoB;IACJ,IAAI;YACKb;QAAPa,OAAOb,CAAAA,cAAAA,GAAGc,OAAO,CAACX,MAAKY,GAAG,OAAnBf,aAAoB,qBAAGI;IAChC,EAAE,OAAOY,KAAK;QACZhB,GAAGE,KAAK;QACR,gFAAgF;QAChF,mFAAmF;QACnF,sFAAsF;QACtF,IAAI,aAAae,IAAI,CAACd,MAAM,MAAMe,IAAAA,0BAAW,EAACF,KAAcZ,OAAOe,IAAI,CAAC;QACxE,MAAMH;IACR;IACAI,IAAAA,mBAAS,EAACP,MAAMR;IAChBL,GAAGE,KAAK;AACV"}
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 } from '../config.ts';\nimport type { OpenResult } from '../db.ts';\nimport { open } from '../db.ts';\nimport type { Row } from '../output.ts';\nimport { printRows } from '../output.ts';\nimport { searchError } from '../search-error.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 SEARCH_FLAGS: ParseArgsOptionsConfig = {\n where: { type: 'string' },\n k: { type: 'string' },\n preset: { type: 'string' },\n include: { type: 'string', multiple: true },\n lexical: { type: 'boolean', default: false },\n};\n\ntype Values = Record<string, string | boolean | string[] | undefined>;\n\nexport function formatOf(values: Values): 'table' | 'json' {\n return values.format === 'json' ? 'json' : 'table';\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\n// \"nothing\", and parseInt would silently truncate \"5.9\" -- all three are caller mistakes\n// 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// 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 async function withDb(ctx: Ctx, configPath: string | undefined, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void> {\n const cfg = ctx.resolveConfig(configPath);\n const { db, warnings } = open(cfg);\n printWarnings(warnings);\n try {\n await fn(db, cfg);\n } finally {\n db.close();\n }\n}\n\n// An unbound `?` silently binds NULL, so mismatched param counts fail loudly instead.\nexport function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: 'table' | 'json', label: string): 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 const { db, warnings } = open(cfg);\n printWarnings(warnings);\n let rows: Row[];\n try {\n rows = db.prepare(sql).all(...params) as Row[];\n } catch (err) {\n db.close();\n // A saved query or ad-hoc SQL can carry `content MATCH ?` too, so the same FTS5\n // punctuation trap applies -- the bound parameters are the search terms there. SQL\n // without MATCH gets its error verbatim; search advice on a plain typo would mislead.\n if (/\\bMATCH\\b/i.test(sql)) throw searchError(err as Error, params.join(' '));\n throw err;\n }\n printRows(rows, format);\n db.close();\n}\n"],"names":["CONFIG","FORMAT","SEARCH_FLAGS","formatOf","parse","parseK","printWarnings","runSql","withDb","format","type","default","config","where","k","preset","include","multiple","lexical","values","argv","usage","options","positionals","parseArgs","args","help","short","strict","allowPositionals","err","console","error","message","process","exit","log","usageError","undefined","parsed","Number","isInteger","warnings","w","warn","ctx","configPath","fn","cfg","open","db","resolveConfig","close","sql","params","label","placeholderCount","match","length","rows","prepare","all","test","searchError","join","printRows"],"mappings":"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"}
@@ -12,6 +12,7 @@ var _commandsts = require("../commands.js");
12
12
  var _configts = require("../config.js");
13
13
  var _dbts = require("../db.js");
14
14
  var _outputts = require("../output.js");
15
+ var _indexts = require("./index.js");
15
16
  var _sharedts = require("./shared.js");
16
17
  function _define_property(obj, key, value) {
17
18
  if (key in obj) {
@@ -53,7 +54,9 @@ function vectorState(db) {
53
54
  }
54
55
  }
55
56
  var status = function status(ctx) {
56
- var cfg = ctx.resolveConfig();
57
+ var values = (0, _sharedts.parse)(ctx.argv, "usage: ".concat(ctx.name, " ").concat(_indexts.USAGE.status), _object_spread({}, _sharedts.FORMAT, _sharedts.CONFIG)).values;
58
+ var format = (0, _sharedts.formatOf)(values);
59
+ var cfg = ctx.resolveConfig(values.config);
57
60
  var _open = (0, _dbts.open)(cfg), db = _open.db, dbPath = _open.dbPath, warnings = _open.warnings;
58
61
  (0, _sharedts.printWarnings)(warnings);
59
62
  var features = (0, _configts.featureStates)(cfg);
@@ -78,7 +81,7 @@ var status = function status(ctx) {
78
81
  watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null,
79
82
  busyTimeoutMs: busyTimeoutMs
80
83
  };
81
- if (ctx.format === 'json') {
84
+ if (format === 'json') {
82
85
  console.log(JSON.stringify(result, null, 2));
83
86
  } else {
84
87
  console.log("db: ".concat(result.db));
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { presetCoverage } from '../commands.ts';\nimport { embedConfig, featureStates } from '../config.ts';\nimport { docCount, getMeta, open } from '../db.ts';\nimport { featuresLine, presetsLines } from '../output.ts';\nimport { printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\n// Vectors are computed on the first semantic query, not at reconcile, so a tree can have a\n// semantic-on preset with nothing embedded yet -- reported here because a fast `rebuild` on\n// such a tree otherwise reads as \"the feature isn't on\".\nfunction vectorState(db: ReturnType<typeof open>['db']): { embedded: number; pending: number } | null {\n try {\n const row = db.prepare('SELECT COUNT(vector) AS embedded, COUNT(*) - COUNT(vector) AS pending FROM embeddings').get() as { embedded: number; pending: number };\n return row;\n } catch {\n return null;\n }\n}\n\nconst status: Command = (ctx) => {\n const cfg = ctx.resolveConfig();\n const { db, dbPath, warnings } = open(cfg);\n printWarnings(warnings);\n\n const features = featureStates(cfg);\n const e = embedConfig(cfg);\n const vectors = e ? vectorState(db) : null;\n const presets = presetCoverage(db, cfg);\n const heartbeat = getMeta(db, 'watch_heartbeat');\n // Derived at open() (F): 3x the largest reconcile this cache has ever held its write\n // transaction for, floored at 30s -- read back from the connection rather than\n // recomputed here, so this always reports what open() actually set.\n const busyTimeoutMs = (db.prepare('PRAGMA busy_timeout').get() as { timeout: number }).timeout;\n const result = {\n db: dbPath,\n docs: docCount(db),\n features: features.on,\n featuresOff: features.off,\n embed: e ? { type: e.type, model: e.model, ...(vectors ?? {}) } : null,\n presets,\n watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null,\n busyTimeoutMs,\n };\n\n if (ctx.format === 'json') {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`db: ${result.db}`);\n console.log(`docs: ${result.docs}`);\n console.log(featuresLine(features));\n if (e) console.log(`embed: ${e.type} ${e.model}${vectors ? ` (vectors: ${vectors.embedded} embedded, ${vectors.pending} pending — embedded on the first semantic search)` : ''}`);\n for (const line of presetsLines(presets)) console.log(line);\n console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: no watcher' : `watcher: last heartbeat ${result.watcherHeartbeatSecondsAgo}s ago`);\n console.log(`busy_timeout: ${result.busyTimeoutMs}ms (derived: 3x the largest reconcile this cache has recorded, floored at 30000ms)`);\n }\n db.close();\n};\nexport default status;\n"],"names":["vectorState","db","row","prepare","get","status","ctx","cfg","resolveConfig","open","dbPath","warnings","printWarnings","features","featureStates","e","embedConfig","vectors","presets","presetCoverage","heartbeat","getMeta","busyTimeoutMs","timeout","result","docs","docCount","on","featuresOff","off","embed","type","model","watcherHeartbeatSecondsAgo","Math","round","Date","now","parse","format","console","log","JSON","stringify","featuresLine","embedded","pending","presetsLines","line","close"],"mappings":";;;;+BAyDA;;;eAAA;;;0BAzD+B;wBACY;oBACH;wBACG;wBACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG9B,2FAA2F;AAC3F,4FAA4F;AAC5F,yDAAyD;AACzD,SAASA,YAAYC,EAAiC;IACpD,IAAI;QACF,IAAMC,MAAMD,GAAGE,OAAO,CAAC,yFAAyFC,GAAG;QACnH,OAAOF;IACT,EAAE,eAAM;QACN,OAAO;IACT;AACF;AAEA,IAAMG,SAAkB,gBAACC;IACvB,IAAMC,MAAMD,IAAIE,aAAa;IAC7B,IAAiCC,QAAAA,IAAAA,UAAI,EAACF,MAA9BN,KAAyBQ,MAAzBR,IAAIS,SAAqBD,MAArBC,QAAQC,WAAaF,MAAbE;IACpBC,IAAAA,uBAAa,EAACD;IAEd,IAAME,WAAWC,IAAAA,uBAAa,EAACP;IAC/B,IAAMQ,IAAIC,IAAAA,qBAAW,EAACT;IACtB,IAAMU,UAAUF,IAAIf,YAAYC,MAAM;IACtC,IAAMiB,UAAUC,IAAAA,0BAAc,EAAClB,IAAIM;IACnC,IAAMa,YAAYC,IAAAA,aAAO,EAACpB,IAAI;IAC9B,qFAAqF;IACrF,+EAA+E;IAC/E,oEAAoE;IACpE,IAAMqB,gBAAgB,AAACrB,GAAGE,OAAO,CAAC,uBAAuBC,GAAG,GAA2BmB,OAAO;IAC9F,IAAMC,SAAS;QACbvB,IAAIS;QACJe,MAAMC,IAAAA,cAAQ,EAACzB;QACfY,UAAUA,SAASc,EAAE;QACrBC,aAAaf,SAASgB,GAAG;QACzBC,OAAOf,IAAI;YAAEgB,MAAMhB,EAAEgB,IAAI;YAAEC,OAAOjB,EAAEiB,KAAK;WAAMf,oBAAAA,qBAAAA,UAAW,CAAC,KAAO;QAClEC,SAAAA;QACAe,4BAA4Bb,YAAYc,KAAKC,KAAK,CAAC,AAACC,CAAAA,KAAKC,GAAG,KAAKD,KAAKE,KAAK,CAAClB,UAAS,IAAK,QAAQ;QAClGE,eAAAA;IACF;IAEA,IAAIhB,IAAIiC,MAAM,KAAK,QAAQ;QACzBC,QAAQC,GAAG,CAACC,KAAKC,SAAS,CAACnB,QAAQ,MAAM;IAC3C,OAAO;QACLgB,QAAQC,GAAG,CAAC,AAAC,OAAgB,OAAVjB,OAAOvB,EAAE;QAC5BuC,QAAQC,GAAG,CAAC,AAAC,SAAoB,OAAZjB,OAAOC,IAAI;QAChCe,QAAQC,GAAG,CAACG,IAAAA,sBAAY,EAAC/B;QACzB,IAAIE,GAAGyB,QAAQC,GAAG,CAAC,AAAC,UAAmB1B,OAAVA,EAAEgB,IAAI,EAAC,KAAad,OAAVF,EAAEiB,KAAK,EAAiI,OAA9Hf,UAAU,AAAC,cAA2CA,OAA9BA,QAAQ4B,QAAQ,EAAC,eAA6B,OAAhB5B,QAAQ6B,OAAO,EAAC,uDAAqD;YACvK,kCAAA,2BAAA;;YAAL,QAAK,YAAcC,IAAAA,sBAAY,EAAC7B,6BAA3B,SAAA,6BAAA,QAAA,yBAAA;gBAAA,IAAM8B,OAAN;gBAAqCR,QAAQC,GAAG,CAACO;;;YAAjD;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;QACLR,QAAQC,GAAG,CAACjB,OAAOS,0BAA0B,KAAK,OAAO,wBAAwB,AAAC,2BAA4D,OAAlCT,OAAOS,0BAA0B,EAAC;QAC9IO,QAAQC,GAAG,CAAC,AAAC,iBAAqC,OAArBjB,OAAOF,aAAa,EAAC;IACpD;IACArB,GAAGgD,KAAK;AACV;IACA,WAAe5C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { presetCoverage } from '../commands.ts';\nimport { embedConfig, featureStates } from '../config.ts';\nimport { docCount, getMeta, open } from '../db.ts';\nimport { featuresLine, presetsLines } from '../output.ts';\nimport { USAGE } from './index.ts';\nimport { CONFIG, FORMAT, formatOf, parse, printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\n// Vectors are computed on the first semantic query, not at reconcile, so a tree can have a\n// semantic-on preset with nothing embedded yet -- reported here because a fast `rebuild` on\n// such a tree otherwise reads as \"the feature isn't on\".\nfunction vectorState(db: ReturnType<typeof open>['db']): { embedded: number; pending: number } | null {\n try {\n const row = db.prepare('SELECT COUNT(vector) AS embedded, COUNT(*) - COUNT(vector) AS pending FROM embeddings').get() as { embedded: number; pending: number };\n return row;\n } catch {\n return null;\n }\n}\n\nconst status: Command = (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);\n const { db, dbPath, warnings } = open(cfg);\n printWarnings(warnings);\n\n const features = featureStates(cfg);\n const e = embedConfig(cfg);\n const vectors = e ? vectorState(db) : null;\n const presets = presetCoverage(db, cfg);\n const heartbeat = getMeta(db, 'watch_heartbeat');\n // Derived at open() (F): 3x the largest reconcile this cache has ever held its write\n // transaction for, floored at 30s -- read back from the connection rather than\n // recomputed here, so this always reports what open() actually set.\n const busyTimeoutMs = (db.prepare('PRAGMA busy_timeout').get() as { timeout: number }).timeout;\n const result = {\n db: dbPath,\n docs: docCount(db),\n features: features.on,\n featuresOff: features.off,\n embed: e ? { type: e.type, model: e.model, ...(vectors ?? {}) } : null,\n presets,\n watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null,\n busyTimeoutMs,\n };\n\n if (format === 'json') {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`db: ${result.db}`);\n console.log(`docs: ${result.docs}`);\n console.log(featuresLine(features));\n if (e) console.log(`embed: ${e.type} ${e.model}${vectors ? ` (vectors: ${vectors.embedded} embedded, ${vectors.pending} pending — embedded on the first semantic search)` : ''}`);\n for (const line of presetsLines(presets)) console.log(line);\n console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: no watcher' : `watcher: last heartbeat ${result.watcherHeartbeatSecondsAgo}s ago`);\n console.log(`busy_timeout: ${result.busyTimeoutMs}ms (derived: 3x the largest reconcile this cache has recorded, floored at 30000ms)`);\n }\n db.close();\n};\nexport default status;\n"],"names":["vectorState","db","row","prepare","get","status","ctx","values","parse","argv","USAGE","name","FORMAT","CONFIG","format","formatOf","cfg","resolveConfig","config","open","dbPath","warnings","printWarnings","features","featureStates","e","embedConfig","vectors","presets","presetCoverage","heartbeat","getMeta","busyTimeoutMs","timeout","result","docs","docCount","on","featuresOff","off","embed","type","model","watcherHeartbeatSecondsAgo","Math","round","Date","now","console","log","JSON","stringify","featuresLine","embedded","pending","presetsLines","line","close"],"mappings":"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"}
@@ -1,18 +1,8 @@
1
1
  import type { ResolvedConfig } from '../config.js';
2
2
  export interface Ctx {
3
3
  name: string;
4
- rest: string[];
5
- format: 'table' | 'json';
6
- values: {
7
- config?: string;
8
- where?: string;
9
- k?: string;
10
- preset?: string;
11
- include?: string[];
12
- force: boolean;
13
- lexical: boolean;
14
- };
15
- resolveConfig(): ResolvedConfig;
4
+ argv: string[];
5
+ resolveConfig(configPath?: string): ResolvedConfig;
16
6
  usageError(message: string): never;
17
7
  }
18
8
  export type Command = (ctx: Ctx) => Promise<void> | void;
@@ -1,18 +1,8 @@
1
1
  import type { ResolvedConfig } from '../config.js';
2
2
  export interface Ctx {
3
3
  name: string;
4
- rest: string[];
5
- format: 'table' | 'json';
6
- values: {
7
- config?: string;
8
- where?: string;
9
- k?: string;
10
- preset?: string;
11
- include?: string[];
12
- force: boolean;
13
- lexical: boolean;
14
- };
15
- resolveConfig(): ResolvedConfig;
4
+ argv: string[];
5
+ resolveConfig(configPath?: string): ResolvedConfig;
16
6
  usageError(message: string): never;
17
7
  }
18
8
  export type Command = (ctx: Ctx) => Promise<void> | void;
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _watchts = require("../watch.js");
12
+ var _indexts = require("./index.js");
12
13
  var _sharedts = require("./shared.js");
13
14
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
14
15
  try {
@@ -39,6 +40,34 @@ function _async_to_generator(fn) {
39
40
  });
40
41
  };
41
42
  }
43
+ function _define_property(obj, key, value) {
44
+ if (key in obj) {
45
+ Object.defineProperty(obj, key, {
46
+ value: value,
47
+ enumerable: true,
48
+ configurable: true,
49
+ writable: true
50
+ });
51
+ } else {
52
+ obj[key] = value;
53
+ }
54
+ return obj;
55
+ }
56
+ function _object_spread(target) {
57
+ for(var i = 1; i < arguments.length; i++){
58
+ var source = arguments[i] != null ? arguments[i] : {};
59
+ var ownKeys = Object.keys(source);
60
+ if (typeof Object.getOwnPropertySymbols === "function") {
61
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
62
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
63
+ }));
64
+ }
65
+ ownKeys.forEach(function(key) {
66
+ _define_property(target, key, source[key]);
67
+ });
68
+ }
69
+ return target;
70
+ }
42
71
  function _ts_generator(thisArg, body) {
43
72
  var f, y, t, _ = {
44
73
  label: 0,
@@ -140,13 +169,20 @@ function _ts_generator(thisArg, body) {
140
169
  }
141
170
  var watch = function watch(ctx) {
142
171
  return _async_to_generator(function() {
172
+ var values;
143
173
  return _ts_generator(this, function(_state) {
144
174
  switch(_state.label){
145
175
  case 0:
176
+ values = (0, _sharedts.parse)(ctx.argv, "usage: ".concat(ctx.name, " ").concat(_indexts.USAGE.watch), _object_spread({
177
+ force: {
178
+ type: 'boolean',
179
+ default: false
180
+ }
181
+ }, _sharedts.CONFIG)).values;
146
182
  return [
147
183
  4,
148
- (0, _watchts.runWatch)(ctx.resolveConfig(), {
149
- force: ctx.values.force,
184
+ (0, _watchts.runWatch)(ctx.resolveConfig(values.config), {
185
+ force: values.force,
150
186
  onEvent: function onEvent(event) {
151
187
  if (event.type === 'started') {
152
188
  console.log("".concat(ctx.name, " watch: watching ").concat(event.baseDir));
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/watch.ts"],"sourcesContent":["import type { WatchEvent } from '../watch.ts';\nimport { runWatch } from '../watch.ts';\nimport { printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst watch: Command = async (ctx) => {\n await runWatch(ctx.resolveConfig(), {\n force: ctx.values.force,\n onEvent: (event: WatchEvent) => {\n if (event.type === 'started') {\n console.log(`${ctx.name} watch: watching ${event.baseDir}`);\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":["watch","ctx","runWatch","resolveConfig","force","values","onEvent","event","type","console","log","name","baseDir","dbPath","printWarnings","warnings","parsed","total","error","message"],"mappings":";;;;+BAqBA;;;eAAA;;;uBApByB;wBACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG9B,IAAMA,QAAiB,eAAOC;;;;;oBAC5B;;wBAAMC,IAAAA,iBAAQ,EAACD,IAAIE,aAAa,IAAI;4BAClCC,OAAOH,IAAII,MAAM,CAACD,KAAK;4BACvBE,SAAS,SAATA,QAAUC;gCACR,IAAIA,MAAMC,IAAI,KAAK,WAAW;oCAC5BC,QAAQC,GAAG,CAAC,AAAC,GAA8BH,OAA5BN,IAAIU,IAAI,EAAC,qBAAiC,OAAdJ,MAAMK,OAAO;oCACxDH,QAAQC,GAAG,CAAC,AAAC,GAAwBH,OAAtBN,IAAIU,IAAI,EAAC,eAA0B,OAAbJ,MAAMM,MAAM;gCACnD,OAAO,IAAIN,MAAMC,IAAI,KAAK,cAAc;oCACtCM,IAAAA,uBAAa,EAACP,MAAMQ,QAAQ;oCAC5B,IAAIR,MAAMS,MAAM,GAAG,GAAGP,QAAQC,GAAG,CAAC,AAAC,GAAiCH,OAA/BN,IAAIU,IAAI,EAAC,wBAAwDJ,OAAlCA,MAAMS,MAAM,EAAC,uBAAiC,OAAZT,MAAMU,KAAK,EAAC;gCACpH,OAAO;oCACLR,QAAQS,KAAK,CAAC,AAAC,GAAsCX,OAApCN,IAAIU,IAAI,EAAC,6BAAyC,OAAdJ,MAAMY,OAAO;gCACpE;4BACF;wBACF;;;oBAbA;;;;;;IAcF;;IACA,WAAenB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/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.baseDir}`);\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":["watch","ctx","values","parse","argv","USAGE","name","force","type","default","CONFIG","runWatch","resolveConfig","config","onEvent","event","console","log","baseDir","dbPath","printWarnings","warnings","parsed","total","error","message"],"mappings":";;;;+BAuBA;;;eAAA;;;uBAtByB;uBACH;wBACuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG7C,IAAMA,QAAiB,eAAOC;;YACpBC;;;;oBAAAA,SAAWC,IAAAA,eAAK,EAACF,IAAIG,IAAI,EAAE,AAAC,UAAqBC,OAAZJ,IAAIK,IAAI,EAAC,KAAe,OAAZD,cAAK,CAACL,KAAK,GAAI;wBAAEO,OAAO;4BAAEC,MAAM;4BAAWC,SAAS;wBAAM;uBAAMC,gBAAM,GAAvHR;oBACR;;wBAAMS,IAAAA,iBAAQ,EAACV,IAAIW,aAAa,CAACV,OAAOW,MAAM,GAAyB;4BACrEN,OAAOL,OAAOK,KAAK;4BACnBO,SAAS,SAATA,QAAUC;gCACR,IAAIA,MAAMP,IAAI,KAAK,WAAW;oCAC5BQ,QAAQC,GAAG,CAAC,AAAC,GAA8BF,OAA5Bd,IAAIK,IAAI,EAAC,qBAAiC,OAAdS,MAAMG,OAAO;oCACxDF,QAAQC,GAAG,CAAC,AAAC,GAAwBF,OAAtBd,IAAIK,IAAI,EAAC,eAA0B,OAAbS,MAAMI,MAAM;gCACnD,OAAO,IAAIJ,MAAMP,IAAI,KAAK,cAAc;oCACtCY,IAAAA,uBAAa,EAACL,MAAMM,QAAQ;oCAC5B,IAAIN,MAAMO,MAAM,GAAG,GAAGN,QAAQC,GAAG,CAAC,AAAC,GAAiCF,OAA/Bd,IAAIK,IAAI,EAAC,wBAAwDS,OAAlCA,MAAMO,MAAM,EAAC,uBAAiC,OAAZP,MAAMQ,KAAK,EAAC;gCACpH,OAAO;oCACLP,QAAQQ,KAAK,CAAC,AAAC,GAAsCT,OAApCd,IAAIK,IAAI,EAAC,6BAAyC,OAAdS,MAAMU,OAAO;gCACpE;4BACF;wBACF;;;oBAbA;;;;;;IAcF;;IACA,WAAezB"}