sensemaking 0.24.7 → 0.25.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/README.md +21 -12
- package/dist/cjs/cli/build.d.cts +3 -0
- package/dist/cjs/cli/build.d.ts +3 -0
- package/dist/cjs/cli/build.js +195 -0
- package/dist/cjs/cli/build.js.map +1 -0
- package/dist/cjs/cli/index.d.cts +7 -6
- package/dist/cjs/cli/index.d.ts +7 -6
- package/dist/cjs/cli/index.js +12 -6
- package/dist/cjs/cli/index.js.map +1 -1
- package/dist/cjs/cli/init.js +2 -2
- package/dist/cjs/cli/init.js.map +1 -1
- package/dist/cjs/cli/map.js +7 -2
- package/dist/cjs/cli/map.js.map +1 -1
- package/dist/cjs/cli/named.js +63 -21
- package/dist/cjs/cli/named.js.map +1 -1
- package/dist/cjs/cli/path.js +7 -2
- package/dist/cjs/cli/path.js.map +1 -1
- package/dist/cjs/cli/peek.js +7 -2
- package/dist/cjs/cli/peek.js.map +1 -1
- package/dist/cjs/cli/related.js +55 -6
- package/dist/cjs/cli/related.js.map +1 -1
- package/dist/cjs/cli/search.js +54 -15
- package/dist/cjs/cli/search.js.map +1 -1
- package/dist/cjs/cli/shared.d.cts +9 -3
- package/dist/cjs/cli/shared.d.ts +9 -3
- package/dist/cjs/cli/shared.js +109 -74
- package/dist/cjs/cli/shared.js.map +1 -1
- package/dist/cjs/cli/sql.js +8 -3
- package/dist/cjs/cli/sql.js.map +1 -1
- package/dist/cjs/cli/status.js +142 -50
- package/dist/cjs/cli/status.js.map +1 -1
- package/dist/cjs/cli/types.d.cts +4 -2
- package/dist/cjs/cli/types.d.ts +4 -2
- package/dist/cjs/cli.js +10 -4
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/commands/map.js +10 -6
- package/dist/cjs/commands/map.js.map +1 -1
- package/dist/cjs/commands/peek.js +10 -6
- package/dist/cjs/commands/peek.js.map +1 -1
- package/dist/cjs/commands/related.d.cts +1 -0
- package/dist/cjs/commands/related.d.ts +1 -0
- package/dist/cjs/commands/related.js +56 -21
- package/dist/cjs/commands/related.js.map +1 -1
- package/dist/cjs/commands/scope.js +1 -1
- package/dist/cjs/commands/scope.js.map +1 -1
- package/dist/cjs/commands/search.js +102 -84
- package/dist/cjs/commands/search.js.map +1 -1
- package/dist/cjs/config/index.d.cts +1 -1
- package/dist/cjs/config/index.d.ts +1 -1
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/config/load.d.cts +6 -1
- package/dist/cjs/config/load.d.ts +6 -1
- package/dist/cjs/config/load.js +38 -1
- package/dist/cjs/config/load.js.map +1 -1
- package/dist/cjs/config/types.d.cts +2 -1
- package/dist/cjs/config/types.d.ts +2 -1
- package/dist/cjs/config/types.js +1 -1
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/config/validate.js +20 -0
- package/dist/cjs/config/validate.js.map +1 -1
- package/dist/cjs/embed/query.d.cts +2 -1
- package/dist/cjs/embed/query.d.ts +2 -1
- package/dist/cjs/embed/query.js +186 -109
- package/dist/cjs/embed/query.js.map +1 -1
- package/dist/cjs/errors.d.cts +1 -1
- package/dist/cjs/errors.d.ts +1 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/features/embed.js.map +1 -1
- package/dist/cjs/graph/traverse.js +11 -6
- package/dist/cjs/graph/traverse.js.map +1 -1
- package/dist/cjs/index.d.cts +3 -3
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/atomic-write.js +20 -6
- package/dist/cjs/lib/atomic-write.js.map +1 -1
- package/dist/cjs/lib/serial-query.d.cts +1 -0
- package/dist/cjs/lib/serial-query.d.ts +1 -0
- package/dist/cjs/lib/serial-query.js +22 -0
- package/dist/cjs/lib/serial-query.js.map +1 -0
- package/dist/cjs/scan/index.d.cts +5 -0
- package/dist/cjs/scan/index.d.ts +5 -0
- package/dist/cjs/scan/index.js +12 -4
- package/dist/cjs/scan/index.js.map +1 -1
- package/dist/cjs/scan/pool.d.cts +5 -0
- package/dist/cjs/scan/pool.d.ts +5 -0
- package/dist/cjs/scan/pool.js +167 -55
- package/dist/cjs/scan/pool.js.map +1 -1
- package/dist/cjs/store/builder.d.cts +6 -1
- package/dist/cjs/store/builder.d.ts +6 -1
- package/dist/cjs/store/builder.js +135 -5
- package/dist/cjs/store/builder.js.map +1 -1
- package/dist/cjs/store/duckdb/lexical.d.cts +2 -0
- package/dist/cjs/store/duckdb/lexical.d.ts +2 -0
- package/dist/cjs/store/duckdb/lexical.js +139 -7
- package/dist/cjs/store/duckdb/lexical.js.map +1 -1
- package/dist/cjs/store/duckdb/open.d.cts +3 -3
- package/dist/cjs/store/duckdb/open.d.ts +3 -3
- package/dist/cjs/store/duckdb/open.js +53 -41
- package/dist/cjs/store/duckdb/open.js.map +1 -1
- package/dist/cjs/store/duckdb/reconcile.js +2 -2
- package/dist/cjs/store/duckdb/reconcile.js.map +1 -1
- package/dist/cjs/store/index.d.cts +23 -4
- package/dist/cjs/store/index.d.ts +23 -4
- package/dist/cjs/store/index.js +224 -15
- package/dist/cjs/store/index.js.map +1 -1
- package/dist/cjs/store/open.d.cts +9 -1
- package/dist/cjs/store/open.d.ts +9 -1
- package/dist/cjs/store/open.js +479 -128
- package/dist/cjs/store/open.js.map +1 -1
- package/dist/cjs/store/reconcile.js +93 -63
- package/dist/cjs/store/reconcile.js.map +1 -1
- package/dist/cjs/store/sqlite/open.d.cts +3 -3
- package/dist/cjs/store/sqlite/open.d.ts +3 -3
- package/dist/cjs/store/sqlite/open.js +44 -36
- package/dist/cjs/store/sqlite/open.js.map +1 -1
- package/dist/cjs/store/turso/open.d.cts +3 -3
- package/dist/cjs/store/turso/open.d.ts +3 -3
- package/dist/cjs/store/turso/open.js +83 -66
- package/dist/cjs/store/turso/open.js.map +1 -1
- package/dist/cjs/store/turso/store.d.cts +3 -1
- package/dist/cjs/store/turso/store.d.ts +3 -1
- package/dist/cjs/store/turso/store.js +46 -31
- package/dist/cjs/store/turso/store.js.map +1 -1
- package/dist/cjs/store/types.d.cts +12 -3
- package/dist/cjs/store/types.d.ts +12 -3
- package/dist/cjs/store/types.js.map +1 -1
- package/dist/cjs/watch.js +155 -35
- package/dist/cjs/watch.js.map +1 -1
- package/dist/esm/cli/build.d.ts +3 -0
- package/dist/esm/cli/build.js +18 -0
- package/dist/esm/cli/build.js.map +1 -0
- package/dist/esm/cli/index.d.ts +7 -6
- package/dist/esm/cli/index.js +8 -6
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/init.js +2 -2
- package/dist/esm/cli/init.js.map +1 -1
- package/dist/esm/cli/map.js +8 -2
- package/dist/esm/cli/map.js.map +1 -1
- package/dist/esm/cli/named.js +38 -14
- package/dist/esm/cli/named.js.map +1 -1
- package/dist/esm/cli/path.js +8 -2
- package/dist/esm/cli/path.js.map +1 -1
- package/dist/esm/cli/peek.js +8 -2
- package/dist/esm/cli/peek.js.map +1 -1
- package/dist/esm/cli/related.js +21 -3
- package/dist/esm/cli/related.js.map +1 -1
- package/dist/esm/cli/search.js +28 -7
- package/dist/esm/cli/search.js.map +1 -1
- package/dist/esm/cli/shared.d.ts +9 -3
- package/dist/esm/cli/shared.js +44 -24
- package/dist/esm/cli/shared.js.map +1 -1
- package/dist/esm/cli/sql.js +8 -2
- package/dist/esm/cli/sql.js.map +1 -1
- package/dist/esm/cli/status.js +166 -111
- package/dist/esm/cli/status.js.map +1 -1
- package/dist/esm/cli/types.d.ts +4 -2
- package/dist/esm/cli/types.js.map +1 -1
- package/dist/esm/cli.js +9 -4
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/commands/map.js +5 -1
- package/dist/esm/commands/map.js.map +1 -1
- package/dist/esm/commands/peek.js +5 -1
- package/dist/esm/commands/peek.js.map +1 -1
- package/dist/esm/commands/related.d.ts +1 -0
- package/dist/esm/commands/related.js +19 -10
- package/dist/esm/commands/related.js.map +1 -1
- package/dist/esm/commands/scope.js +1 -1
- package/dist/esm/commands/scope.js.map +1 -1
- package/dist/esm/commands/search.js +11 -10
- package/dist/esm/commands/search.js.map +1 -1
- package/dist/esm/config/index.d.ts +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/load.d.ts +6 -1
- package/dist/esm/config/load.js +32 -3
- package/dist/esm/config/load.js.map +1 -1
- package/dist/esm/config/types.d.ts +2 -1
- package/dist/esm/config/types.js +1 -1
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/config/validate.js +20 -0
- package/dist/esm/config/validate.js.map +1 -1
- package/dist/esm/embed/query.d.ts +2 -1
- package/dist/esm/embed/query.js +40 -34
- package/dist/esm/embed/query.js.map +1 -1
- package/dist/esm/errors.d.ts +1 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/features/embed.js.map +1 -1
- package/dist/esm/graph/traverse.js +5 -1
- package/dist/esm/graph/traverse.js.map +1 -1
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/atomic-write.js +14 -6
- package/dist/esm/lib/atomic-write.js.map +1 -1
- package/dist/esm/lib/serial-query.d.ts +1 -0
- package/dist/esm/lib/serial-query.js +13 -0
- package/dist/esm/lib/serial-query.js.map +1 -0
- package/dist/esm/scan/index.d.ts +5 -0
- package/dist/esm/scan/index.js +7 -3
- package/dist/esm/scan/index.js.map +1 -1
- package/dist/esm/scan/pool.d.ts +5 -0
- package/dist/esm/scan/pool.js +41 -16
- package/dist/esm/scan/pool.js.map +1 -1
- package/dist/esm/store/builder.d.ts +6 -1
- package/dist/esm/store/builder.js +19 -0
- package/dist/esm/store/builder.js.map +1 -1
- package/dist/esm/store/duckdb/lexical.d.ts +2 -0
- package/dist/esm/store/duckdb/lexical.js +32 -4
- package/dist/esm/store/duckdb/lexical.js.map +1 -1
- package/dist/esm/store/duckdb/open.d.ts +3 -3
- package/dist/esm/store/duckdb/open.js +13 -6
- package/dist/esm/store/duckdb/open.js.map +1 -1
- package/dist/esm/store/duckdb/reconcile.js +2 -2
- package/dist/esm/store/duckdb/reconcile.js.map +1 -1
- package/dist/esm/store/index.d.ts +23 -4
- package/dist/esm/store/index.js +80 -15
- package/dist/esm/store/index.js.map +1 -1
- package/dist/esm/store/open.d.ts +9 -1
- package/dist/esm/store/open.js +175 -84
- package/dist/esm/store/open.js.map +1 -1
- package/dist/esm/store/reconcile.js +12 -0
- package/dist/esm/store/reconcile.js.map +1 -1
- package/dist/esm/store/sqlite/open.d.ts +3 -3
- package/dist/esm/store/sqlite/open.js +9 -6
- package/dist/esm/store/sqlite/open.js.map +1 -1
- package/dist/esm/store/turso/open.d.ts +3 -3
- package/dist/esm/store/turso/open.js +14 -10
- package/dist/esm/store/turso/open.js.map +1 -1
- package/dist/esm/store/turso/store.d.ts +3 -1
- package/dist/esm/store/turso/store.js +5 -1
- package/dist/esm/store/turso/store.js.map +1 -1
- package/dist/esm/store/types.d.ts +12 -3
- package/dist/esm/store/types.js.map +1 -1
- package/dist/esm/watch.js +57 -19
- package/dist/esm/watch.js.map +1 -1
- package/package.json +1 -1
- package/schema.json +7 -2
- package/skills/sense/SKILL.md +3 -3
- package/skills/sense-bases/SKILL.md +1 -2
- package/skills/sense-setup/SKILL.md +1 -1
- package/skills/sense-setup/references/embeddings.md +1 -1
- package/skills/sense-setup/references/store-benchmarks.md +6 -6
package/dist/cjs/cli/status.js
CHANGED
|
@@ -22,6 +22,7 @@ var _indexts = require("../config/index.js");
|
|
|
22
22
|
var _distributionts = require("../embed/distribution.js");
|
|
23
23
|
var _httpts = require("../embed/http.js");
|
|
24
24
|
var _storets = require("../embed/store.js");
|
|
25
|
+
var _errorsts = require("../errors.js");
|
|
25
26
|
var _outputts = require("../output/output.js");
|
|
26
27
|
var _indexts1 = require("../store/index.js");
|
|
27
28
|
var _watchclaimts = require("../watch-claim.js");
|
|
@@ -72,6 +73,12 @@ function _define_property(obj, key, value) {
|
|
|
72
73
|
} else obj[key] = value;
|
|
73
74
|
return obj;
|
|
74
75
|
}
|
|
76
|
+
function _instanceof(left, right) {
|
|
77
|
+
"@swc/helpers - instanceof";
|
|
78
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
79
|
+
return !!right[Symbol.hasInstance](left);
|
|
80
|
+
} else return left instanceof right;
|
|
81
|
+
}
|
|
75
82
|
function _iterable_to_array_limit(arr, i) {
|
|
76
83
|
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
77
84
|
if (_i == null) return;
|
|
@@ -226,8 +233,8 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
226
233
|
}
|
|
227
234
|
// 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.
|
|
228
235
|
// The exception is the embed block's url and key, whose effect is remote and otherwise invisible.
|
|
229
|
-
//
|
|
230
|
-
//
|
|
236
|
+
// A failed or interrupted vector preparation can leave core and lexical state usable. Status is
|
|
237
|
+
// observational, so it reports that pending capability instead of repairing it.
|
|
231
238
|
function vectorState(store) {
|
|
232
239
|
return _async_to_generator(function() {
|
|
233
240
|
var stmt, unused;
|
|
@@ -355,66 +362,137 @@ function languagesInfo(e) {
|
|
|
355
362
|
}
|
|
356
363
|
var status = function status(ctx) {
|
|
357
364
|
return _async_to_generator(function() {
|
|
358
|
-
var
|
|
365
|
+
var values, format, cfg, lexical, opened, err, _ref, _cfg_configDir, _cfg_migratedFrom, _cfg_unknownKeys, _cfg_rootDir, _cfg_rootDir1, configDir, dbPath, watcher, result, migrated, pid, store, dbPath1, warnings, _ref1, _ref2, _cfg_configDir1, _process_env_e_key, _cfg_migratedFrom1, _cfg_unknownKeys1, _cfg_rootDir2, _cfg_rootDir3, _cfg_configDir2, _cfg_queries, features, e, hasModel, reachable, _tmp, vectors, _tmp1, presets, _ref3, declaredLanguages, languagesState, languagesSource, detectedLanguages, cacheSchema, engine, watcher1, keyEnv, result1, _tmp2, migrated1, shown, total, breakdown, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, line, pid1, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value, key, value;
|
|
359
366
|
return _ts_generator(this, function(_state) {
|
|
360
367
|
switch(_state.label){
|
|
361
368
|
case 0:
|
|
362
369
|
values = (0, _sharedts.parse)(ctx.argv, "usage: ".concat(ctx.name, " ").concat(_indexts2.USAGE.status), _object_spread({}, _sharedts.FORMAT, _sharedts.CONFIG)).values;
|
|
363
370
|
format = (0, _sharedts.formatOf)(values);
|
|
364
|
-
cfg = ctx.resolveConfig(values.config
|
|
371
|
+
cfg = ctx.resolveConfig(values.config, {
|
|
372
|
+
writeMigration: false
|
|
373
|
+
});
|
|
365
374
|
return [
|
|
366
375
|
4,
|
|
367
|
-
(0, _indexts1.
|
|
376
|
+
(0, _indexts1.lexicalReadiness)(cfg)
|
|
368
377
|
];
|
|
369
378
|
case 1:
|
|
370
|
-
|
|
379
|
+
lexical = _state.sent();
|
|
380
|
+
_state.label = 2;
|
|
381
|
+
case 2:
|
|
382
|
+
_state.trys.push([
|
|
383
|
+
2,
|
|
384
|
+
4,
|
|
385
|
+
,
|
|
386
|
+
5
|
|
387
|
+
]);
|
|
388
|
+
return [
|
|
389
|
+
4,
|
|
390
|
+
(0, _indexts1.openStore)(cfg, {
|
|
391
|
+
build: false
|
|
392
|
+
})
|
|
393
|
+
];
|
|
394
|
+
case 3:
|
|
395
|
+
opened = _state.sent();
|
|
396
|
+
return [
|
|
397
|
+
3,
|
|
398
|
+
5
|
|
399
|
+
];
|
|
400
|
+
case 4:
|
|
401
|
+
err = _state.sent();
|
|
402
|
+
if (!_instanceof(err, _errorsts.SenseError) || err.code !== 'INDEX_NOT_READY') throw err;
|
|
403
|
+
configDir = (_ref = (_cfg_configDir = cfg.configDir) !== null && _cfg_configDir !== void 0 ? _cfg_configDir : cfg.rootDir) !== null && _ref !== void 0 ? _ref : cfg.baseDir;
|
|
404
|
+
dbPath = (0, _nodepath.join)(configDir, _indexts.STATE_DIR, (0, _indexts1.storeFilename)(cfg));
|
|
405
|
+
watcher = (0, _watchclaimts.readWatchClaim)(configDir);
|
|
406
|
+
result = {
|
|
407
|
+
config: cfg.configPath,
|
|
408
|
+
configVersion: _indexts.SUPPORTED_CONFIG_VERSION,
|
|
409
|
+
migratedFrom: (_cfg_migratedFrom = cfg.migratedFrom) !== null && _cfg_migratedFrom !== void 0 ? _cfg_migratedFrom : null,
|
|
410
|
+
unknownConfigKeys: (_cfg_unknownKeys = cfg.unknownKeys) !== null && _cfg_unknownKeys !== void 0 ? _cfg_unknownKeys : null,
|
|
411
|
+
tree: (_cfg_rootDir = cfg.rootDir) !== null && _cfg_rootDir !== void 0 ? _cfg_rootDir : cfg.baseDir,
|
|
412
|
+
treeRoot: (_cfg_rootDir1 = cfg.rootDir) !== null && _cfg_rootDir1 !== void 0 ? _cfg_rootDir1 : cfg.baseDir,
|
|
413
|
+
configDir: configDir,
|
|
414
|
+
cache: (0, _nodepath.dirname)(dbPath),
|
|
415
|
+
db: dbPath,
|
|
416
|
+
indexReady: false,
|
|
417
|
+
indexError: err.message,
|
|
418
|
+
lexicalReady: lexical.ready,
|
|
419
|
+
lexicalError: lexical.error,
|
|
420
|
+
watcherPid: watcher ? String(watcher.pid) : null,
|
|
421
|
+
watcherHeartbeatSecondsAgo: watcher ? Math.round((Date.now() - watcher.heartbeatMs) / 1000) : null
|
|
422
|
+
};
|
|
423
|
+
if (format === 'json') {
|
|
424
|
+
console.log((0, _outputts.stringifyJson)(result, 2));
|
|
425
|
+
} else {
|
|
426
|
+
migrated = cfg.migratedFrom !== undefined ? ", migration from v".concat(cfg.migratedFrom, " pending") : '';
|
|
427
|
+
console.log("config: ".concat(result.config, " (v").concat(_indexts.SUPPORTED_CONFIG_VERSION).concat(migrated, ")"));
|
|
428
|
+
console.log("tree root: ".concat(result.treeRoot));
|
|
429
|
+
console.log("configDir: ".concat(result.configDir));
|
|
430
|
+
console.log("cache: ".concat(result.cache));
|
|
431
|
+
console.log("index: not ready (".concat(result.indexError, ")"));
|
|
432
|
+
console.log("lexical: ".concat(result.lexicalReady ? 'ready' : "not ready (".concat(result.lexicalError, ")")));
|
|
433
|
+
pid = result.watcherPid ? "pid ".concat(result.watcherPid, ", ") : '';
|
|
434
|
+
console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : "watcher: ".concat(pid, "last heartbeat ").concat(result.watcherHeartbeatSecondsAgo, "s ago"));
|
|
435
|
+
}
|
|
436
|
+
return [
|
|
437
|
+
2
|
|
438
|
+
];
|
|
439
|
+
case 5:
|
|
440
|
+
store = opened.store, dbPath1 = opened.dbPath, warnings = opened.warnings;
|
|
441
|
+
_state.label = 6;
|
|
442
|
+
case 6:
|
|
443
|
+
_state.trys.push([
|
|
444
|
+
6,
|
|
445
|
+
,
|
|
446
|
+
19,
|
|
447
|
+
21
|
|
448
|
+
]);
|
|
371
449
|
(0, _sharedts.printWarnings)(warnings);
|
|
372
450
|
features = (0, _indexts.featureStates)(cfg);
|
|
373
451
|
e = (0, _indexts.embedConfig)(cfg);
|
|
374
452
|
hasModel = e ? (0, _storets.modelPresent)(cfg) : false;
|
|
375
453
|
if (!e) return [
|
|
376
454
|
3,
|
|
377
|
-
|
|
455
|
+
8
|
|
378
456
|
];
|
|
379
457
|
return [
|
|
380
458
|
4,
|
|
381
459
|
embedReachable(e)
|
|
382
460
|
];
|
|
383
|
-
case
|
|
461
|
+
case 7:
|
|
384
462
|
_tmp = _state.sent();
|
|
385
463
|
return [
|
|
386
464
|
3,
|
|
387
|
-
|
|
465
|
+
9
|
|
388
466
|
];
|
|
389
|
-
case
|
|
467
|
+
case 8:
|
|
390
468
|
_tmp = null;
|
|
391
|
-
_state.label =
|
|
392
|
-
case
|
|
469
|
+
_state.label = 9;
|
|
470
|
+
case 9:
|
|
393
471
|
reachable = _tmp;
|
|
394
472
|
if (!e) return [
|
|
395
473
|
3,
|
|
396
|
-
|
|
474
|
+
11
|
|
397
475
|
];
|
|
398
476
|
return [
|
|
399
477
|
4,
|
|
400
478
|
vectorState(store)
|
|
401
479
|
];
|
|
402
|
-
case
|
|
480
|
+
case 10:
|
|
403
481
|
_tmp1 = _state.sent();
|
|
404
482
|
return [
|
|
405
483
|
3,
|
|
406
|
-
|
|
484
|
+
12
|
|
407
485
|
];
|
|
408
|
-
case
|
|
486
|
+
case 11:
|
|
409
487
|
_tmp1 = null;
|
|
410
|
-
_state.label =
|
|
411
|
-
case
|
|
488
|
+
_state.label = 12;
|
|
489
|
+
case 12:
|
|
412
490
|
vectors = _tmp1;
|
|
413
491
|
return [
|
|
414
492
|
4,
|
|
415
493
|
(0, _statusts.presetCoverage)(store, cfg)
|
|
416
494
|
];
|
|
417
|
-
case
|
|
495
|
+
case 13:
|
|
418
496
|
presets = _state.sent();
|
|
419
497
|
_ref3 = e ? languagesInfo(e) : {
|
|
420
498
|
languages: null,
|
|
@@ -425,21 +503,21 @@ var status = function status(ctx) {
|
|
|
425
503
|
4,
|
|
426
504
|
(0, _distributionts.languageDistribution)(store)
|
|
427
505
|
];
|
|
428
|
-
case
|
|
429
|
-
detectedLanguages = (
|
|
506
|
+
case 14:
|
|
507
|
+
detectedLanguages = (_ref1 = _state.sent()) !== null && _ref1 !== void 0 ? _ref1 : null;
|
|
430
508
|
return [
|
|
431
509
|
4,
|
|
432
510
|
(0, _indexts1.getMeta)(store, 'schema_version')
|
|
433
511
|
];
|
|
434
|
-
case
|
|
512
|
+
case 15:
|
|
435
513
|
cacheSchema = _state.sent();
|
|
436
514
|
return [
|
|
437
515
|
4,
|
|
438
516
|
store.engineStatus()
|
|
439
517
|
];
|
|
440
|
-
case
|
|
518
|
+
case 16:
|
|
441
519
|
engine = _state.sent();
|
|
442
|
-
|
|
520
|
+
watcher1 = (0, _watchclaimts.readWatchClaim)((_ref2 = (_cfg_configDir1 = cfg.configDir) !== null && _cfg_configDir1 !== void 0 ? _cfg_configDir1 : cfg.rootDir) !== null && _ref2 !== void 0 ? _ref2 : cfg.baseDir);
|
|
443
521
|
// The env var holds the token; only its name and whether it is set are ever reported.
|
|
444
522
|
keyEnv = (e === null || e === void 0 ? void 0 : e.key) ? {
|
|
445
523
|
name: e.key,
|
|
@@ -448,27 +526,31 @@ var status = function status(ctx) {
|
|
|
448
526
|
_tmp2 = {
|
|
449
527
|
config: cfg.configPath,
|
|
450
528
|
configVersion: _indexts.SUPPORTED_CONFIG_VERSION,
|
|
451
|
-
migratedFrom: (
|
|
452
|
-
unknownConfigKeys: (
|
|
453
|
-
tree: (
|
|
454
|
-
treeRoot: (
|
|
455
|
-
configDir: (
|
|
456
|
-
cache: (0, _nodepath.dirname)(
|
|
457
|
-
db:
|
|
529
|
+
migratedFrom: (_cfg_migratedFrom1 = cfg.migratedFrom) !== null && _cfg_migratedFrom1 !== void 0 ? _cfg_migratedFrom1 : null,
|
|
530
|
+
unknownConfigKeys: (_cfg_unknownKeys1 = cfg.unknownKeys) !== null && _cfg_unknownKeys1 !== void 0 ? _cfg_unknownKeys1 : null,
|
|
531
|
+
tree: (_cfg_rootDir2 = cfg.rootDir) !== null && _cfg_rootDir2 !== void 0 ? _cfg_rootDir2 : cfg.baseDir,
|
|
532
|
+
treeRoot: (_cfg_rootDir3 = cfg.rootDir) !== null && _cfg_rootDir3 !== void 0 ? _cfg_rootDir3 : cfg.baseDir,
|
|
533
|
+
configDir: (_cfg_configDir2 = cfg.configDir) !== null && _cfg_configDir2 !== void 0 ? _cfg_configDir2 : cfg.baseDir,
|
|
534
|
+
cache: (0, _nodepath.dirname)(dbPath1),
|
|
535
|
+
db: dbPath1,
|
|
536
|
+
indexReady: true,
|
|
537
|
+
indexError: null,
|
|
538
|
+
lexicalReady: lexical.ready,
|
|
539
|
+
lexicalError: lexical.error,
|
|
458
540
|
cacheSchema: cacheSchema
|
|
459
541
|
};
|
|
460
542
|
return [
|
|
461
543
|
4,
|
|
462
544
|
(0, _indexts1.docCount)(store)
|
|
463
545
|
];
|
|
464
|
-
case
|
|
546
|
+
case 17:
|
|
465
547
|
_tmp2.docs = _state.sent();
|
|
466
548
|
return [
|
|
467
549
|
4,
|
|
468
550
|
parseErrorCount(store)
|
|
469
551
|
];
|
|
470
|
-
case
|
|
471
|
-
|
|
552
|
+
case 18:
|
|
553
|
+
result1 = (_tmp2.unparseableFrontmatter = _state.sent(), _tmp2.features = features.on, _tmp2.featuresOff = features.off, _tmp2.embed = e ? _object_spread({
|
|
472
554
|
provider: e.provider,
|
|
473
555
|
model: e.model,
|
|
474
556
|
dir: e.provider === 'static' ? (0, _storets.modelDir)(e.model) : null,
|
|
@@ -479,18 +561,19 @@ var status = function status(ctx) {
|
|
|
479
561
|
languages: declaredLanguages,
|
|
480
562
|
languagesState: languagesState,
|
|
481
563
|
detectedLanguages: detectedLanguages
|
|
482
|
-
}, vectors !== null && vectors !== void 0 ? vectors : {}) : null, _tmp2.presets = presets, _tmp2.queries = Object.keys((_cfg_queries = cfg.queries) !== null && _cfg_queries !== void 0 ? _cfg_queries : {}).length, _tmp2.watcherPid =
|
|
564
|
+
}, vectors !== null && vectors !== void 0 ? vectors : {}) : null, _tmp2.presets = presets, _tmp2.queries = Object.keys((_cfg_queries = cfg.queries) !== null && _cfg_queries !== void 0 ? _cfg_queries : {}).length, _tmp2.watcherPid = watcher1 ? String(watcher1.pid) : null, _tmp2.watcherHeartbeatSecondsAgo = watcher1 ? Math.round((Date.now() - watcher1.heartbeatMs) / 1000) : null, _tmp2.engine = engine, _tmp2);
|
|
483
565
|
if (format === 'json') {
|
|
484
|
-
console.log((0, _outputts.stringifyJson)(
|
|
566
|
+
console.log((0, _outputts.stringifyJson)(result1, 2));
|
|
485
567
|
} else {
|
|
486
|
-
|
|
487
|
-
console.log("config: ".concat(
|
|
568
|
+
migrated1 = cfg.migratedFrom !== undefined ? ", migration from v".concat(cfg.migratedFrom, " applied in memory") : '';
|
|
569
|
+
console.log("config: ".concat(result1.config, " (v").concat(_indexts.SUPPORTED_CONFIG_VERSION).concat(migrated1, ")"));
|
|
488
570
|
// A load-time stderr warning has scrolled away by the time anyone looks here.
|
|
489
571
|
if (cfg.unknownKeys) console.log(" unknown keys, ignored: ".concat(cfg.unknownKeys.join(', ')));
|
|
490
|
-
console.log("tree root: ".concat(
|
|
491
|
-
console.log("configDir: ".concat(
|
|
492
|
-
console.log("cache: ".concat(
|
|
493
|
-
console.log("
|
|
572
|
+
console.log("tree root: ".concat(result1.treeRoot));
|
|
573
|
+
console.log("configDir: ".concat(result1.configDir));
|
|
574
|
+
console.log("cache: ".concat(result1.cache, " (schema ").concat(result1.cacheSchema, "; ").concat(ctx.name, " build --force to recreate)"));
|
|
575
|
+
console.log("lexical: ".concat(result1.lexicalReady ? 'ready' : "not ready (".concat(result1.lexicalError, ")")));
|
|
576
|
+
console.log("docs: ".concat(result1.docs).concat(result1.unparseableFrontmatter > 0 ? " (".concat(result1.unparseableFrontmatter, " with unparseable frontmatter: WHERE _parse_error IS NOT NULL)") : ''));
|
|
494
577
|
console.log('');
|
|
495
578
|
console.log((0, _outputts.featuresLine)(features));
|
|
496
579
|
// One authoritative block, off states included: an absent model reads as a degraded search,
|
|
@@ -498,7 +581,7 @@ var status = function status(ctx) {
|
|
|
498
581
|
if (!e) console.log('embed: off (no preset asks for vectors)');
|
|
499
582
|
else {
|
|
500
583
|
console.log("embed: ".concat(e.provider, " ").concat(e.model));
|
|
501
|
-
if (e.provider === 'static') console.log(" model: ".concat((0, _storets.modelDir)(e.model), " (").concat(hasModel ? 'present' : "missing, ".concat((0, _storets.isDownloadable)(e.model) ? "fetches
|
|
584
|
+
if (e.provider === 'static') console.log(" model: ".concat((0, _storets.modelDir)(e.model), " (").concat(hasModel ? 'present' : "missing, ".concat((0, _storets.isDownloadable)(e.model) ? "fetches when build, watch, or a vector query needs it; run `".concat(ctx.name, " download` to prefetch") : "no ".concat(_storets.MODEL_FILENAMES, " in that directory")), ")"));
|
|
502
585
|
if (declaredLanguages && languagesSource === 'config') console.log(" languages: ".concat(declaredLanguages.join(', '), " (declared in embed.languages)"));
|
|
503
586
|
else if (declaredLanguages && languagesSource === 'card') console.log(" languages: ".concat(declaredLanguages.join(', '), " (declared by the model card)"));
|
|
504
587
|
else if (languagesState === 'none') console.log(' languages: none declared by the model card');
|
|
@@ -510,8 +593,8 @@ var status = function status(ctx) {
|
|
|
510
593
|
console.log(" url: ".concat(shown).concat(reachable === null ? '' : reachable ? ' (reachable)' : ' (unreachable)'));
|
|
511
594
|
}
|
|
512
595
|
if (keyEnv) console.log(" key: env ".concat(keyEnv.name, " (").concat(keyEnv.set ? 'set' : 'NOT SET', ")"));
|
|
513
|
-
if (!hasModel) console.log(' vectors:
|
|
514
|
-
else if (vectors) console.log(" vectors: ".concat(vectors.embedded, " embedded, ").concat(vectors.pending, " pending (
|
|
596
|
+
if (!hasModel) console.log(' vectors: unavailable until the model is present; semantic queries fail, while lexical-only presets remain usable');
|
|
597
|
+
else if (vectors) console.log(" vectors: ".concat(vectors.embedded, " embedded, ").concat(vectors.pending, " pending").concat(vectors.pending > 0 ? " (run `".concat(ctx.name, " build` to prepare all configured vectors)") : ''));
|
|
515
598
|
if (detectedLanguages) {
|
|
516
599
|
total = Object.values(detectedLanguages).reduce(function(a, b) {
|
|
517
600
|
return a + b;
|
|
@@ -547,12 +630,12 @@ var status = function status(ctx) {
|
|
|
547
630
|
}
|
|
548
631
|
}
|
|
549
632
|
console.log('');
|
|
550
|
-
console.log("queries: ".concat(
|
|
551
|
-
|
|
552
|
-
console.log(
|
|
633
|
+
console.log("queries: ".concat(result1.queries, " saved (").concat(ctx.name, " --list)"));
|
|
634
|
+
pid1 = result1.watcherPid ? "pid ".concat(result1.watcherPid, ", ") : '';
|
|
635
|
+
console.log(result1.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : "watcher: ".concat(pid1, "last heartbeat ").concat(result1.watcherHeartbeatSecondsAgo, "s ago"));
|
|
553
636
|
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
554
637
|
try {
|
|
555
|
-
for(_iterator1 = Object.entries(
|
|
638
|
+
for(_iterator1 = Object.entries(result1.engine)[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
556
639
|
_step_value = _sliced_to_array(_step1.value, 2), key = _step_value[0], value = _step_value[1];
|
|
557
640
|
console.log("".concat("".concat(store.name, ":").padEnd(10)).concat(key, " ").concat(value));
|
|
558
641
|
}
|
|
@@ -571,12 +654,21 @@ var status = function status(ctx) {
|
|
|
571
654
|
}
|
|
572
655
|
}
|
|
573
656
|
}
|
|
657
|
+
return [
|
|
658
|
+
3,
|
|
659
|
+
21
|
|
660
|
+
];
|
|
661
|
+
case 19:
|
|
574
662
|
return [
|
|
575
663
|
4,
|
|
576
664
|
store.close()
|
|
577
665
|
];
|
|
578
|
-
case
|
|
666
|
+
case 20:
|
|
579
667
|
_state.sent();
|
|
668
|
+
return [
|
|
669
|
+
7
|
|
670
|
+
];
|
|
671
|
+
case 21:
|
|
580
672
|
return [
|
|
581
673
|
2
|
|
582
674
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { dirname } from 'node:path';\nimport { presetCoverage } from '../commands/status.ts';\nimport { embedConfig, featureStates, 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 { featuresLine, presetsLines, stringifyJson } from '../output/output.ts';\nimport { docCount, getMeta, openStore } 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// Vectors are computed on the first semantic query, not at reconcile, so a tree can have a semantic-on preset with nothing embedded yet.\n// Reported here because a fast reconcile on such a tree otherwise reads as \"the feature isn't on\".\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);\n const { store, dbPath, warnings } = await openStore(cfg);\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 // Written by the store's open() on every open, so it is this cache's true version on either\n // store (sqlite 18, duckdb 2); a version mismatch already triggered a rebuild 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 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 ? `, migrated from v${cfg.migratedFrom} on this run` : '';\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}; delete this directory to reset)`);\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 automatically at first search, or 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: off until the model is present; search runs on words and links');\n else if (vectors) console.log(` vectors: ${vectors.embedded} embedded, ${vectors.pending} pending (embedded on the first semantic search)`);\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 await store.close();\n};\nexport default status;\n"],"names":["redactUrl","vectorState","store","stmt","prepare","get","parseErrorCount","n","url","parsed","URL","username","password","toString","replace","embedReachable","e","base","provider","probeReachable","languagesInfo","languages","state","source","isDownloadable","model","cardLanguages","readLanguages","undefined","length","status","ctx","cfg","process","values","format","dbPath","warnings","features","hasModel","reachable","vectors","presets","declaredLanguages","languagesState","languagesSource","detectedLanguages","cacheSchema","engine","watcher","keyEnv","result","migrated","shown","total","breakdown","line","pid","key","value","parse","argv","USAGE","name","FORMAT","CONFIG","formatOf","resolveConfig","config","openStore","printWarnings","featureStates","embedConfig","modelPresent","presetCoverage","languageDistribution","getMeta","engineStatus","readWatchClaim","configDir","rootDir","baseDir","set","env","configPath","configVersion","SUPPORTED_CONFIG_VERSION","migratedFrom","unknownConfigKeys","unknownKeys","tree","treeRoot","cache","dirname","db","docCount","docs","unparseableFrontmatter","on","featuresOff","off","embed","dir","modelDir","downloaded","queries","Object","keys","watcherPid","String","watcherHeartbeatSecondsAgo","Math","round","Date","now","heartbeatMs","console","log","stringifyJson","join","featuresLine","MODEL_FILENAMES","embedded","pending","reduce","a","b","entries","sort","map","code","presetsLines","padEnd","close"],"mappings":";;;;;;;;;;;QAsKA;eAAA;;QAnIgBA;eAAAA;;;wBAnCQ;wBACO;uBACsC;8BAChC;sBACN;uBACwD;wBAC7B;wBACb;4BAEd;wBACT;wBACyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG/D,+OAA+O;AAC/O,kGAAkG;AAElG,yIAAyI;AACzI,mGAAmG;AACnG,SAAeC,YAAYC,KAAY;;YAE7BC;;;;;;;;;;oBAAO;;wBAAMD,MAAME,OAAO,CAAC;;;oBAA3BD,OAAO;oBACL;;wBAAMA,KAAKE,GAAG;;;oBAAtB;;wBAAQ;;;;oBAER;;wBAAO;;;;;;;;IAEX;;AAEA,SAAeC,gBAAgBJ,KAAY;;YACnCC;;;;oBAAO;;wBAAMD,MAAME,OAAO,CAAC;;;oBAA3BD,OAAO;oBACJ;;wBAAMA,KAAKE,GAAG;;;oBAAvB;;wBAAS,cAAoCE,CAAC;;;;IAChD;;AAIO,SAASP,UAAUQ,GAAW;IACnC,IAAI;QACF,IAAMC,SAAS,IAAIC,IAAIF;QACvB,IAAI,CAACC,OAAOE,QAAQ,IAAI,CAACF,OAAOG,QAAQ,EAAE,OAAOJ;QACjDC,OAAOE,QAAQ,GAAG;QAClBF,OAAOG,QAAQ,GAAG;QAClB,OAAO,AAAC,GAAuC,OAArCH,OAAOI,QAAQ,GAAGC,OAAO,CAAC,OAAO,KAAI;IACjD,EAAE,eAAM;QACN,OAAON;IACT;AACF;AAEA,gGAAgG;AAChG,+FAA+F;AAC/F,SAAeO,eAAeC,CAAqC;;YAEnDA,QAARC;;YADN,IAAID,EAAEE,QAAQ,KAAK,YAAaF,EAAEE,QAAQ,KAAK,YAAY,CAACF,EAAER,GAAG,EAAG;;gBAAO;;YACrES,OAAO,EAACD,SAAAA,EAAER,GAAG,cAALQ,oBAAAA,SAAS,0BAA0BF,OAAO,CAAC,QAAQ;YACjE;;gBAAOK,IAAAA,sBAAc,EAACH,EAAEE,QAAQ,KAAK,WAAW,AAAC,GAAO,OAALD,MAAK,aAAWA;;;IACrE;;AAIA,8FAA8F;AAC9F,8FAA8F;AAC9F,SAASG,cAAcJ,CAA8C;IACnE,IAAIA,EAAEK,SAAS,EAAE,OAAO;QAAEA,WAAWL,EAAEK,SAAS;QAAEC,OAAO;QAAYC,QAAQ;IAAS;IACtF,IAAIP,EAAEE,QAAQ,KAAK,YAAY,CAACM,IAAAA,uBAAc,EAACR,EAAES,KAAK,GAAG,OAAO;QAAEJ,WAAW;QAAMC,OAAO;QAAMC,QAAQ;IAAK;IAC7G,IAAMG,gBAAgBC,IAAAA,sBAAa,EAACX,EAAES,KAAK;IAC3C,IAAIC,kBAAkBE,WAAW,OAAO;QAAEP,WAAW;QAAMC,OAAO;QAAcC,QAAQ;IAAK;IAC7F,IAAIG,cAAcG,MAAM,KAAK,GAAG,OAAO;QAAER,WAAW;QAAMC,OAAO;QAAQC,QAAQ;IAAK;IACtF,OAAO;QAAEF,WAAWK;QAAeJ,OAAO;QAAYC,QAAQ;IAAO;AACvE;AAEA,IAAMO,SAAkB,gBAAOC;;YAcF,MAOIC,OAAAA,gBAEcC,oBAI7BD,mBACKA,kBACbA,cACIA,eACCA,iBAUUA,cAxCfE,QACFC,QACAH,KAC8B,OAA5B9B,OAAOkC,QAAQC,UAGjBC,UACAtB,GACAuB,UACAC,iBACAC,gBACAC,SACmF1B,OAAtE2B,mBAA0BC,gBAAwBC,iBAC/DC,mBAGAC,aAGAC,QACAC,SAEAC,QACAC,eA0BEC,UAuBIC,OAOAC,OACAC,WAQL,2BAAA,mBAAA,gBAAA,WAAA,OAAMC,MAGLC,KAED,4BAAA,oBAAA,iBAAA,YAAA,qBAAOC,KAAKC;;;;oBA7FXzB,SAAW0B,IAAAA,eAAK,EAAC7B,IAAI8B,IAAI,EAAE,AAAC,UAAqBC,OAAZ/B,IAAIgC,IAAI,EAAC,KAAgB,OAAbD,eAAK,CAAChC,MAAM,GAAI,mBAAKkC,gBAAM,EAAKC,gBAAM,GAAvF/B;oBACFC,SAAS+B,IAAAA,kBAAQ,EAAChC;oBAClBF,MAAMD,IAAIoC,aAAa,CAACjC,OAAOkC,MAAM;oBACP;;wBAAMC,IAAAA,mBAAS,EAACrC;;;oBAAhB,QAAA,eAA5B9B,QAA4B,MAA5BA,OAAOkC,SAAqB,MAArBA,QAAQC,WAAa,MAAbA;oBACvBiC,IAAAA,uBAAa,EAACjC;oBAERC,WAAWiC,IAAAA,sBAAa,EAACvC;oBACzBhB,IAAIwD,IAAAA,oBAAW,EAACxC;oBAChBO,WAAWvB,IAAIyD,IAAAA,qBAAY,EAACzC,OAAO;yBACvBhB,GAAAA;;;;oBAAI;;wBAAMD,eAAeC;;;2BAArB;;;;;;2BAA0B;;;oBAA1CwB;yBACUxB,GAAAA;;;;oBAAI;;wBAAMf,YAAYC;;;4BAAlB;;;;;;4BAA2B;;;oBAAzCuC;oBACU;;wBAAMiC,IAAAA,wBAAc,EAACxE,OAAO8B;;;oBAAtCU,UAAU;oBACyE1B,QAAAA,IAAII,cAAcJ,KAAK;wBAAEK,WAAW;wBAAMC,OAAO;wBAAMC,QAAQ;oBAAK,GAA1IoB,oBAAsE3B,MAAjFK,WAAqCuB,iBAA4C5B,MAAnDM,OAA+BuB,kBAAoB7B,MAA5BO;oBAClC;;wBAAMoD,IAAAA,oCAAoB,EAACzE;;;oBAAhD4C,qBAAqB,OAAA,2BAAA,kBAAA,OAAsC;oBAG7C;;wBAAM8B,IAAAA,iBAAO,EAAC1E,OAAO;;;oBAAnC6C,cAAc;oBAGL;;wBAAM7C,MAAM2E,YAAY;;;oBAAjC7B,SAAS;oBACTC,UAAU6B,IAAAA,4BAAc,GAAC9C,SAAAA,iBAAAA,IAAI+C,SAAS,cAAb/C,4BAAAA,iBAAiBA,IAAIgD,OAAO,cAA5BhD,mBAAAA,QAAgCA,IAAIiD,OAAO;oBAC1E,sFAAsF;oBAChF/B,SAASlC,CAAAA,cAAAA,wBAAAA,EAAG0C,GAAG,IAAG;wBAAEK,MAAM/C,EAAE0C,GAAG;wBAAEwB,KAAK,EAACjD,qBAAAA,QAAQkD,GAAG,CAACnE,EAAE0C,GAAG,CAAC,cAAlBzB,gCAAAA,qBAAsB,QAAQ;oBAAG,IAAI;;wBAEhFmC,QAAQpC,IAAIoD,UAAU;wBACtBC,eAAeC,iCAAwB;wBACvCC,YAAY,GAAEvD,oBAAAA,IAAIuD,YAAY,cAAhBvD,+BAAAA,oBAAoB;wBAClCwD,iBAAiB,GAAExD,mBAAAA,IAAIyD,WAAW,cAAfzD,8BAAAA,mBAAmB;wBACtC0D,IAAI,GAAE1D,eAAAA,IAAIgD,OAAO,cAAXhD,0BAAAA,eAAeA,IAAIiD,OAAO;wBAChCU,QAAQ,GAAE3D,gBAAAA,IAAIgD,OAAO,cAAXhD,2BAAAA,gBAAeA,IAAIiD,OAAO;wBACpCF,SAAS,GAAE/C,kBAAAA,IAAI+C,SAAS,cAAb/C,6BAAAA,kBAAiBA,IAAIiD,OAAO;wBACvCW,OAAOC,IAAAA,iBAAO,EAACzD;wBACf0D,IAAI1D;wBACJW,aAAAA;;oBACM;;wBAAMgD,IAAAA,kBAAQ,EAAC7F;;;0BAArB8F,OAAM;oBACkB;;wBAAM1F,gBAAgBJ;;;oBAZ1CiD,gBAYJ8C,yBAAwB,qBACxB3D,WAAUA,SAAS4D,EAAE,QACrBC,cAAa7D,SAAS8D,GAAG,QACzBC,QAAOrF,IAAI;wBAAEE,UAAUF,EAAEE,QAAQ;wBAAEO,OAAOT,EAAES,KAAK;wBAAE6E,KAAKtF,EAAEE,QAAQ,KAAK,WAAWqF,IAAAA,iBAAQ,EAACvF,EAAES,KAAK,IAAI;wBAAMjB,KAAKQ,EAAER,GAAG,GAAGR,UAAUgB,EAAER,GAAG,IAAI;wBAAMgC,WAAAA;wBAAWU,QAAAA;wBAAQsD,YAAYjE;wBAAUlB,WAAWsB;wBAAmBC,gBAAAA;wBAAgBE,mBAAAA;uBAAuBL,oBAAAA,qBAAAA,UAAW,CAAC,KAAO,YACnRC,UAAAA,eACA+D,UAASC,OAAOC,IAAI,EAAC3E,eAAAA,IAAIyE,OAAO,cAAXzE,0BAAAA,eAAe,CAAC,GAAGH,MAAM,QAC9C+E,aAAY3D,UAAU4D,OAAO5D,QAAQQ,GAAG,IAAI,YAC5CqD,6BAA4B7D,UAAU8D,KAAKC,KAAK,CAAC,AAACC,CAAAA,KAAKC,GAAG,KAAKjE,QAAQkE,WAAW,AAAD,IAAK,QAAQ,YAC9FnE,SAAAA;oBAGF,IAAIb,WAAW,QAAQ;wBACrBiF,QAAQC,GAAG,CAACC,IAAAA,uBAAa,EAACnE,QAAQ;oBACpC,OAAO;wBACCC,WAAWpB,IAAIuD,YAAY,KAAK3D,YAAY,AAAC,oBAAoC,OAAjBI,IAAIuD,YAAY,EAAC,kBAAgB;wBACvG6B,QAAQC,GAAG,CAAC,AAAC,aAA+B/B,OAAnBnC,OAAOiB,MAAM,EAAC,OAAgChB,OAA3BkC,iCAAwB,EAAY,OAATlC,UAAS;wBAChF,8EAA8E;wBAC9E,IAAIpB,IAAIyD,WAAW,EAAE2B,QAAQC,GAAG,CAAC,AAAC,oCAA8D,OAA3BrF,IAAIyD,WAAW,CAAC8B,IAAI,CAAC;wBAC1FH,QAAQC,GAAG,CAAC,AAAC,cAA6B,OAAhBlE,OAAOwC,QAAQ;wBACzCyB,QAAQC,GAAG,CAAC,AAAC,cAA8B,OAAjBlE,OAAO4B,SAAS;wBAC1CqC,QAAQC,GAAG,CAAC,AAAC,aAAoClE,OAAxBA,OAAOyC,KAAK,EAAC,aAA8B,OAAnBzC,OAAOJ,WAAW,EAAC;wBACpEqE,QAAQC,GAAG,CAAC,AAAC,aAA0BlE,OAAdA,OAAO6C,IAAI,EAAgJ,OAA7I7C,OAAO8C,sBAAsB,GAAG,IAAI,AAAC,MAAmC,OAA9B9C,OAAO8C,sBAAsB,EAAC,oEAAkE;wBACjLmB,QAAQC,GAAG,CAAC;wBACZD,QAAQC,GAAG,CAACG,IAAAA,sBAAY,EAAClF;wBACzB,4FAA4F;wBAC5F,0BAA0B;wBAC1B,IAAI,CAACtB,GAAGoG,QAAQC,GAAG,CAAC;6BACf;4BACHD,QAAQC,GAAG,CAAC,AAAC,aAA0BrG,OAAdA,EAAEE,QAAQ,EAAC,KAAW,OAARF,EAAES,KAAK;4BAC9C,IAAIT,EAAEE,QAAQ,KAAK,UAAUkG,QAAQC,GAAG,CAAC,AAAC,sBAA2C9E,OAAtBgE,IAAAA,iBAAQ,EAACvF,EAAES,KAAK,GAAE,MAAoM,OAAhMc,WAAW,YAAY,AAAC,YAAsK,OAA3Jf,IAAAA,uBAAc,EAACR,EAAES,KAAK,IAAI,AAAC,kDAA2D,OAATM,IAAIgC,IAAI,EAAC,4BAA2B,AAAC,MAAqB,OAAhB0D,wBAAe,EAAC,wBAAsB;4BACrR,IAAI9E,qBAAqBE,oBAAoB,UAAUuE,QAAQC,GAAG,CAAC,AAAC,wBAAoD,OAA7B1E,kBAAkB4E,IAAI,CAAC,OAAM;iCACnH,IAAI5E,qBAAqBE,oBAAoB,QAAQuE,QAAQC,GAAG,CAAC,AAAC,wBAAoD,OAA7B1E,kBAAkB4E,IAAI,CAAC,OAAM;iCACtH,IAAI3E,mBAAmB,QAAQwE,QAAQC,GAAG,CAAC;iCAC3C,IAAIzE,mBAAmB,cAAcwE,QAAQC,GAAG,CAAC,AAAC,iEAA0E,OAATtF,IAAIgC,IAAI,EAAC;4BACjI,qFAAqF;4BACrF,kDAAkD;4BAClD,IAAI/C,EAAER,GAAG,IAAIgC,cAAc,MAAM;gCACzBa,QAAQrC,EAAER,GAAG,GAAGR,UAAUgB,EAAER,GAAG,IAAI;gCACzC4G,QAAQC,GAAG,CAAC,AAAC,sBAA6B7E,OAARa,OAAgF,OAAxEb,cAAc,OAAO,KAAKA,YAAY,iBAAiB;4BACnG;4BACA,IAAIU,QAAQkE,QAAQC,GAAG,CAAC,AAAC,0BAAyCnE,OAAhBA,OAAOa,IAAI,EAAC,MAAmC,OAA/Bb,OAAOgC,GAAG,GAAG,QAAQ,WAAU;4BACjG,IAAI,CAAC3C,UAAU6E,QAAQC,GAAG,CAAC;iCACtB,IAAI5E,SAAS2E,QAAQC,GAAG,CAAC,AAAC,sBAAmD5E,OAA9BA,QAAQiF,QAAQ,EAAC,eAA6B,OAAhBjF,QAAQkF,OAAO,EAAC;4BAClG,IAAI7E,mBAAmB;gCACfQ,QAAQoD,OAAOxE,MAAM,CAACY,mBAAmB8E,MAAM,CAAC,SAACC,GAAGC;2CAAMD,IAAIC;mCAAG;gCACjEvE,YAAYmD,OAAOqB,OAAO,CAACjF,mBAC9BkF,IAAI,CAAC,SAACH,GAAGC;2CAAMA,CAAC,CAAC,EAAE,GAAGD,CAAC,CAAC,EAAE;mCAC1BI,GAAG,CAAC;6EAAEC,kBAAM3H;2CAAO,AAAC,GAAUwG,OAARmB,MAAK,KAAiC,OAA9BnB,KAAKC,KAAK,CAAC,AAACzG,IAAI+C,QAAS,MAAK;mCAC5DiE,IAAI,CAAC;gCACRH,QAAQC,GAAG,CAAC,AAAC,uBAAoC/D,OAAdC,WAAU,MAAU,OAAND,OAAM;4BACzD;wBACF;wBACA8D,QAAQC,GAAG,CAAC;wBACP,kCAAA,2BAAA;;4BAAL,IAAK,YAAcc,IAAAA,sBAAY,EAACzF,+BAA3B,6BAAA,QAAA,yBAAA;gCAAMc,OAAN;gCAAqC4D,QAAQC,GAAG,CAAC7D;;;4BAAjD;4BAAA;;;qCAAA,6BAAA;oCAAA;;;oCAAA;0CAAA;;;;wBACL4D,QAAQC,GAAG,CAAC;wBACZD,QAAQC,GAAG,CAAC,AAAC,aAAqCtF,OAAzBoB,OAAOsD,OAAO,EAAC,YAAmB,OAAT1E,IAAIgC,IAAI,EAAC;wBACrDN,MAAMN,OAAOyD,UAAU,GAAG,AAAC,OAAwB,OAAlBzD,OAAOyD,UAAU,EAAC,QAAM;wBAC/DQ,QAAQC,GAAG,CAAClE,OAAO2D,0BAA0B,KAAK,OAAO,mBAAmB,AAAC,aAAiC3D,OAArBM,KAAI,mBAAmD,OAAlCN,OAAO2D,0BAA0B,EAAC;wBAC3I,mCAAA,4BAAA;;4BAAL,IAAK,aAAsBJ,OAAOqB,OAAO,CAAC5E,OAAOH,MAAM,wBAAlD,8BAAA,SAAA,0BAAA;+DAAA,kBAAOU,sBAAKC;gCAAyCyD,QAAQC,GAAG,CAAC,AAAC,GAAgC3D,OAA9B,AAAC,GAAa,OAAXxD,MAAM6D,IAAI,EAAC,KAAGqE,MAAM,CAAC,KAAazE,OAAPD,KAAI,KAAS,OAANC;;;4BAAzG;4BAAA;;;qCAAA,8BAAA;oCAAA;;;oCAAA;0CAAA;;;;oBACP;oBACA;;wBAAMzD,MAAMmI,KAAK;;;oBAAjB;;;;;;IACF;;IACA,WAAevG"}
|
|
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":["redactUrl","vectorState","store","stmt","prepare","get","parseErrorCount","n","url","parsed","URL","username","password","toString","replace","embedReachable","e","base","provider","probeReachable","languagesInfo","languages","state","source","isDownloadable","model","cardLanguages","readLanguages","undefined","length","status","ctx","values","format","cfg","lexical","opened","err","configDir","dbPath","watcher","result","migrated","pid","warnings","process","features","hasModel","reachable","vectors","presets","declaredLanguages","languagesState","languagesSource","detectedLanguages","cacheSchema","engine","keyEnv","shown","total","breakdown","line","key","value","parse","argv","USAGE","name","FORMAT","CONFIG","formatOf","resolveConfig","config","writeMigration","lexicalReadiness","openStore","build","SenseError","code","rootDir","baseDir","join","STATE_DIR","storeFilename","readWatchClaim","configPath","configVersion","SUPPORTED_CONFIG_VERSION","migratedFrom","unknownConfigKeys","unknownKeys","tree","treeRoot","cache","dirname","db","indexReady","indexError","message","lexicalReady","ready","lexicalError","error","watcherPid","String","watcherHeartbeatSecondsAgo","Math","round","Date","now","heartbeatMs","console","log","stringifyJson","printWarnings","featureStates","embedConfig","modelPresent","presetCoverage","languageDistribution","getMeta","engineStatus","set","env","docCount","docs","unparseableFrontmatter","on","featuresOff","off","embed","dir","modelDir","downloaded","queries","Object","keys","featuresLine","MODEL_FILENAMES","embedded","pending","reduce","a","b","entries","sort","map","presetsLines","padEnd","close"],"mappings":"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"}
|
package/dist/cjs/cli/types.d.cts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { ResolvedConfig } from '../config/index.js';
|
|
1
|
+
import type { LoadConfigOptions, ResolvedConfig } from '../config/index.js';
|
|
2
2
|
export interface Ctx {
|
|
3
3
|
name: string;
|
|
4
4
|
argv: string[];
|
|
5
|
-
resolveConfig(configPath?: string
|
|
5
|
+
resolveConfig(configPath?: string, options?: LoadConfigOptions & {
|
|
6
|
+
query?: boolean;
|
|
7
|
+
}): ResolvedConfig;
|
|
6
8
|
usageError(message: string): never;
|
|
7
9
|
}
|
|
8
10
|
export type Command = (ctx: Ctx) => Promise<void> | void;
|
package/dist/cjs/cli/types.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { ResolvedConfig } from '../config/index.js';
|
|
1
|
+
import type { LoadConfigOptions, ResolvedConfig } from '../config/index.js';
|
|
2
2
|
export interface Ctx {
|
|
3
3
|
name: string;
|
|
4
4
|
argv: string[];
|
|
5
|
-
resolveConfig(configPath?: string
|
|
5
|
+
resolveConfig(configPath?: string, options?: LoadConfigOptions & {
|
|
6
|
+
query?: boolean;
|
|
7
|
+
}): ResolvedConfig;
|
|
6
8
|
usageError(message: string): never;
|
|
7
9
|
}
|
|
8
10
|
export type Command = (ctx: Ctx) => Promise<void> | void;
|
package/dist/cjs/cli.js
CHANGED
|
@@ -225,9 +225,15 @@ function usage(name) {
|
|
|
225
225
|
]).join('\n');
|
|
226
226
|
}
|
|
227
227
|
function resolveConfigFor(name, configPath) {
|
|
228
|
-
var
|
|
228
|
+
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
|
229
|
+
// Read the query policy before allowing a migration to write configuration state.
|
|
230
|
+
var cfg = (0, _indexts1.loadConfig)(configPath, options.query ? {
|
|
231
|
+
writeMigration: false
|
|
232
|
+
} : options);
|
|
233
|
+
var writeMigration = options.writeMigration !== false && (!options.query || cfg.build !== false);
|
|
234
|
+
if (options.query && writeMigration && cfg.migratedFrom !== undefined) cfg = (0, _indexts1.loadConfig)(configPath);
|
|
229
235
|
if (cfg.migratedFrom !== undefined) {
|
|
230
|
-
console.warn("".concat(name, ": migrated ").concat(cfg.configPath, " from config version ").concat(cfg.migratedFrom, " to ").concat(_indexts1.SUPPORTED_CONFIG_VERSION));
|
|
236
|
+
console.warn(!writeMigration ? "".concat(name, ": ").concat(cfg.configPath, " needs migration from config version ").concat(cfg.migratedFrom, " to ").concat(_indexts1.SUPPORTED_CONFIG_VERSION, "; using the migrated form in memory only (run ").concat(name, " build to update the file)") : "".concat(name, ": migrated ").concat(cfg.configPath, " from config version ").concat(cfg.migratedFrom, " to ").concat(_indexts1.SUPPORTED_CONFIG_VERSION));
|
|
231
237
|
}
|
|
232
238
|
if (cfg.unknownKeys !== undefined) {
|
|
233
239
|
console.warn("".concat(name, ": ").concat(cfg.configPath, " sets ").concat(cfg.unknownKeys.join(', '), ", which this build does not read (no effect); see schema.json for the keys it does"));
|
|
@@ -342,8 +348,8 @@ function cli(argv, name) {
|
|
|
342
348
|
ctx = {
|
|
343
349
|
name: name,
|
|
344
350
|
argv: argv.slice(1),
|
|
345
|
-
resolveConfig: function resolveConfig(configPath) {
|
|
346
|
-
return resolveConfigFor(name, configPath);
|
|
351
|
+
resolveConfig: function resolveConfig(configPath, options) {
|
|
352
|
+
return resolveConfigFor(name, configPath, options);
|
|
347
353
|
},
|
|
348
354
|
usageError: function usageError(message) {
|
|
349
355
|
console.error(message);
|
package/dist/cjs/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { parseArgs } from 'node:util';\nimport { COMMANDS, USAGE } from './cli/index.ts';\nimport type { Ctx } from './cli/types.ts';\nimport { loadConfig, SUPPORTED_CONFIG_VERSION } from './config/index.ts';\n\n// Parsing and dispatch only; commands lazy-load from src/cli/, so nothing heavy is imported\n// here. Flags parse per command -- this file handles only --version/--help/--list/--config.\n\n// Works from dist/cjs and dist/esm alike: walk up past the dist type-marker package.json.\nfunction packageVersion(): string {\n const load = createRequire(import.meta.url);\n for (const rel of ['../package.json', '../../package.json', '../../../package.json']) {\n try {\n const pkg = load(rel) as { name?: string; version?: string };\n if (pkg.name === 'sensemaking' && pkg.version) return pkg.version;\n } catch {}\n }\n return 'unknown';\n}\n\nfunction usage(name: string): string {\n const lines = Object.values(USAGE).map((u) => ` ${name} ${u}`);\n return [`usage: ${name} <name> [params...] [--format table|json|csv] [--config path]`, ...lines, ` ${name} --list`, ` ${name} --version`].join('\\n');\n}\n\nfunction resolveConfigFor(name: string, configPath: string | undefined) {\n const cfg = loadConfig(configPath);\n if (cfg.migratedFrom !== undefined) {\n console.warn(`${name}: migrated ${cfg.configPath} from config version ${cfg.migratedFrom} to ${SUPPORTED_CONFIG_VERSION}`);\n }\n if (cfg.unknownKeys !== undefined) {\n console.warn(`${name}: ${cfg.configPath} sets ${cfg.unknownKeys.join(', ')}, which this build does not read (no effect); see schema.json for the keys it does`);\n }\n return cfg;\n}\n\n// Thrown errors -> exit 1 with the message verbatim; usage errors exit 2 directly.\nexport default async function cli(argv: string[], name: string): Promise<void> {\n // A closed pipe reader's EPIPE arrives async, after the write loop returns: console.log absorbs it, process.stdout.write (streaming formats) does not, so an unhandled listener kills the process.\n // A throw here is uncaught (async); process.exit() would skip `sense watch`'s cleanup, leaving a heartbeat behind that makes a dead watcher look alive.\n process.stdout.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EPIPE') return;\n console.error(`sense: ${err.message}`);\n process.exitCode = 1;\n });\n\n const first = argv[0];\n\n // No command word, or the first token looks like a flag: the only flags this level knows.\n if (!first || first.startsWith('-')) {\n let values: Record<string, string | boolean | undefined>;\n try {\n ({ values } = parseArgs({\n args: argv,\n options: {\n version: { type: 'boolean', default: false, short: 'v' },\n help: { type: 'boolean', default: false, short: 'h' },\n list: { type: 'boolean', default: false },\n config: { type: 'string' },\n },\n allowPositionals: true,\n }));\n } catch (err) {\n console.error((err as Error).message);\n console.error(usage(name));\n process.exit(2);\n }\n\n try {\n if (values.version) {\n console.log(packageVersion());\n return;\n }\n if (values.help) {\n console.log(usage(name));\n return;\n }\n if (values.list) {\n const queries = resolveConfigFor(name, values.config as string | undefined).queries;\n for (const queryName of Object.keys(queries).sort()) {\n // Every entry names its verb, so --list can label both kinds rather than only\n // marking the exception.\n console.log(`${queryName} (${'search' in queries[queryName] ? 'search' : 'sql'})`);\n }\n return;\n }\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n\n console.error(usage(name));\n process.exit(2);\n }\n\n // Breaking renames get one release of a pointer instead of an \"unknown\" error: find ->\n // search, and query -> sql (which took its name back from the search sense of \"query\").\n const RENAMED: Record<string, string> = { find: 'search', query: 'sql' };\n if (RENAMED[first]) {\n console.error(`${name}: ${first} is now ${RENAMED[first]}`);\n console.error(usage(name));\n process.exit(2);\n }\n\n const ctx: Ctx = {\n name,\n argv: argv.slice(1),\n resolveConfig: (configPath) => resolveConfigFor(name, configPath),\n usageError(message) {\n console.error(message);\n process.exit(2);\n },\n };\n\n try {\n const load = COMMANDS[first];\n if (load) await (await load()).default(ctx);\n else await (await import('./cli/named.ts')).default(ctx, first);\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n}\n"],"names":["cli","packageVersion","load","createRequire","rel","pkg","name","version","usage","lines","Object","values","USAGE","map","u","join","resolveConfigFor","configPath","cfg","loadConfig","migratedFrom","undefined","console","warn","SUPPORTED_CONFIG_VERSION","unknownKeys","argv","first","queries","queryName","RENAMED","ctx","err","process","stdout","on","code","error","message","exitCode","startsWith","parseArgs","args","options","type","default","short","help","list","config","allowPositionals","exit","log","keys","sort","find","query","slice","resolveConfig","usageError","COMMANDS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { parseArgs } from 'node:util';\nimport { COMMANDS, USAGE } from './cli/index.ts';\nimport type { Ctx } from './cli/types.ts';\nimport type { LoadConfigOptions } from './config/index.ts';\nimport { loadConfig, SUPPORTED_CONFIG_VERSION } from './config/index.ts';\n\n// Parsing and dispatch only; commands lazy-load from src/cli/, so nothing heavy is imported\n// here. Flags parse per command -- this file handles only --version/--help/--list/--config.\n\n// Works from dist/cjs and dist/esm alike: walk up past the dist type-marker package.json.\nfunction packageVersion(): string {\n const load = createRequire(import.meta.url);\n for (const rel of ['../package.json', '../../package.json', '../../../package.json']) {\n try {\n const pkg = load(rel) as { name?: string; version?: string };\n if (pkg.name === 'sensemaking' && pkg.version) return pkg.version;\n } catch {}\n }\n return 'unknown';\n}\n\nfunction usage(name: string): string {\n const lines = Object.values(USAGE).map((u) => ` ${name} ${u}`);\n return [`usage: ${name} <name> [params...] [--format table|json|csv] [--config path]`, ...lines, ` ${name} --list`, ` ${name} --version`].join('\\n');\n}\n\nfunction resolveConfigFor(name: string, configPath: string | undefined, options: LoadConfigOptions & { query?: boolean } = {}) {\n // Read the query policy before allowing a migration to write configuration state.\n let cfg = loadConfig(configPath, options.query ? { writeMigration: false } : options);\n const writeMigration = options.writeMigration !== false && (!options.query || cfg.build !== false);\n if (options.query && writeMigration && cfg.migratedFrom !== undefined) cfg = loadConfig(configPath);\n if (cfg.migratedFrom !== undefined) {\n console.warn(\n !writeMigration\n ? `${name}: ${cfg.configPath} needs migration from config version ${cfg.migratedFrom} to ${SUPPORTED_CONFIG_VERSION}; using the migrated form in memory only (run ${name} build to update the file)`\n : `${name}: migrated ${cfg.configPath} from config version ${cfg.migratedFrom} to ${SUPPORTED_CONFIG_VERSION}`\n );\n }\n if (cfg.unknownKeys !== undefined) {\n console.warn(`${name}: ${cfg.configPath} sets ${cfg.unknownKeys.join(', ')}, which this build does not read (no effect); see schema.json for the keys it does`);\n }\n return cfg;\n}\n\n// Thrown errors -> exit 1 with the message verbatim; usage errors exit 2 directly.\nexport default async function cli(argv: string[], name: string): Promise<void> {\n // A closed pipe reader's EPIPE arrives async, after the write loop returns: console.log absorbs it, process.stdout.write (streaming formats) does not, so an unhandled listener kills the process.\n // A throw here is uncaught (async); process.exit() would skip `sense watch`'s cleanup, leaving a heartbeat behind that makes a dead watcher look alive.\n process.stdout.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EPIPE') return;\n console.error(`sense: ${err.message}`);\n process.exitCode = 1;\n });\n\n const first = argv[0];\n\n // No command word, or the first token looks like a flag: the only flags this level knows.\n if (!first || first.startsWith('-')) {\n let values: Record<string, string | boolean | undefined>;\n try {\n ({ values } = parseArgs({\n args: argv,\n options: {\n version: { type: 'boolean', default: false, short: 'v' },\n help: { type: 'boolean', default: false, short: 'h' },\n list: { type: 'boolean', default: false },\n config: { type: 'string' },\n },\n allowPositionals: true,\n }));\n } catch (err) {\n console.error((err as Error).message);\n console.error(usage(name));\n process.exit(2);\n }\n\n try {\n if (values.version) {\n console.log(packageVersion());\n return;\n }\n if (values.help) {\n console.log(usage(name));\n return;\n }\n if (values.list) {\n const queries = resolveConfigFor(name, values.config as string | undefined).queries;\n for (const queryName of Object.keys(queries).sort()) {\n // Every entry names its verb, so --list can label both kinds rather than only\n // marking the exception.\n console.log(`${queryName} (${'search' in queries[queryName] ? 'search' : 'sql'})`);\n }\n return;\n }\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n\n console.error(usage(name));\n process.exit(2);\n }\n\n // Breaking renames get one release of a pointer instead of an \"unknown\" error: find ->\n // search, and query -> sql (which took its name back from the search sense of \"query\").\n const RENAMED: Record<string, string> = { find: 'search', query: 'sql' };\n if (RENAMED[first]) {\n console.error(`${name}: ${first} is now ${RENAMED[first]}`);\n console.error(usage(name));\n process.exit(2);\n }\n\n const ctx: Ctx = {\n name,\n argv: argv.slice(1),\n resolveConfig: (configPath, options) => resolveConfigFor(name, configPath, options),\n usageError(message) {\n console.error(message);\n process.exit(2);\n },\n };\n\n try {\n const load = COMMANDS[first];\n if (load) await (await load()).default(ctx);\n else await (await import('./cli/named.ts')).default(ctx, first);\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n}\n"],"names":["cli","packageVersion","load","createRequire","rel","pkg","name","version","usage","lines","Object","values","USAGE","map","u","join","resolveConfigFor","configPath","options","cfg","loadConfig","query","writeMigration","build","migratedFrom","undefined","console","warn","SUPPORTED_CONFIG_VERSION","unknownKeys","argv","first","queries","queryName","RENAMED","ctx","err","process","stdout","on","code","error","message","exitCode","startsWith","parseArgs","args","type","default","short","help","list","config","allowPositionals","exit","log","keys","sort","find","slice","resolveConfig","usageError","COMMANDS"],"mappings":"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"}
|
package/dist/cjs/commands/map.js
CHANGED
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "mapTree", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _indexts = require("../config/index.js");
|
|
12
|
+
var _serialqueryts = require("../lib/serial-query.js");
|
|
12
13
|
var _scopets = require("./scope.js");
|
|
13
14
|
var _statusts = require("./status.js");
|
|
14
15
|
function _array_like_to_array(arr, len) {
|
|
@@ -176,12 +177,15 @@ function chunk(items, size) {
|
|
|
176
177
|
for(var i = 0; i < items.length; i += size)out.push(items.slice(i, i + size));
|
|
177
178
|
return out;
|
|
178
179
|
}
|
|
179
|
-
function mapTree(
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
function mapTree(store, cfg) {
|
|
181
|
+
var overrides = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
|
182
|
+
return (0, _serialqueryts.serialQuery)(store, function() {
|
|
183
|
+
return mapIndexed(store, cfg, overrides);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
function mapIndexed(store, cfg, overrides) {
|
|
187
|
+
return _async_to_generator(function() {
|
|
183
188
|
return _ts_generator(this, function(_state) {
|
|
184
|
-
overrides = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
185
189
|
return [
|
|
186
190
|
2,
|
|
187
191
|
store.transaction(function() {
|
|
@@ -372,6 +376,6 @@ function mapTree(_0, _1) {
|
|
|
372
376
|
})
|
|
373
377
|
];
|
|
374
378
|
});
|
|
375
|
-
})
|
|
379
|
+
})();
|
|
376
380
|
}
|
|
377
381
|
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|