sensemaking 0.15.3 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/README.md +33 -5
  2. package/dist/cjs/cli/download.js +15 -19
  3. package/dist/cjs/cli/download.js.map +1 -1
  4. package/dist/cjs/cli/index.d.cts +1 -1
  5. package/dist/cjs/cli/index.d.ts +1 -1
  6. package/dist/cjs/cli/index.js +9 -20
  7. package/dist/cjs/cli/index.js.map +1 -1
  8. package/dist/cjs/cli/init.js +31 -5
  9. package/dist/cjs/cli/init.js.map +1 -1
  10. package/dist/cjs/cli/map.js +1 -3
  11. package/dist/cjs/cli/map.js.map +1 -1
  12. package/dist/cjs/cli/named.js +3 -8
  13. package/dist/cjs/cli/named.js.map +1 -1
  14. package/dist/cjs/cli/path.js +4 -7
  15. package/dist/cjs/cli/path.js.map +1 -1
  16. package/dist/cjs/cli/peek.js +2 -4
  17. package/dist/cjs/cli/peek.js.map +1 -1
  18. package/dist/cjs/cli/related.js +14 -20
  19. package/dist/cjs/cli/related.js.map +1 -1
  20. package/dist/cjs/cli/search.js +12 -17
  21. package/dist/cjs/cli/search.js.map +1 -1
  22. package/dist/cjs/cli/shared.js +17 -21
  23. package/dist/cjs/cli/shared.js.map +1 -1
  24. package/dist/cjs/cli/sql.js +7 -8
  25. package/dist/cjs/cli/sql.js.map +1 -1
  26. package/dist/cjs/cli/status.js +344 -102
  27. package/dist/cjs/cli/status.js.map +1 -1
  28. package/dist/cjs/cli/watch.js +3 -8
  29. package/dist/cjs/cli/watch.js.map +1 -1
  30. package/dist/cjs/cli.js +22 -34
  31. package/dist/cjs/cli.js.map +1 -1
  32. package/dist/cjs/column-hint.js +4 -2
  33. package/dist/cjs/column-hint.js.map +1 -1
  34. package/dist/cjs/commands/peek.js +5 -3
  35. package/dist/cjs/commands/peek.js.map +1 -1
  36. package/dist/cjs/commands/related.js +31 -28
  37. package/dist/cjs/commands/related.js.map +1 -1
  38. package/dist/cjs/commands/scope.js +4 -2
  39. package/dist/cjs/commands/scope.js.map +1 -1
  40. package/dist/cjs/commands/search.js +36 -108
  41. package/dist/cjs/commands/search.js.map +1 -1
  42. package/dist/cjs/commands/signals.d.cts +18 -0
  43. package/dist/cjs/commands/signals.d.ts +18 -0
  44. package/dist/cjs/commands/signals.js +299 -0
  45. package/dist/cjs/commands/signals.js.map +1 -0
  46. package/dist/cjs/commands/status.d.cts +2 -2
  47. package/dist/cjs/commands/status.d.ts +2 -2
  48. package/dist/cjs/commands/status.js +1 -1
  49. package/dist/cjs/commands/status.js.map +1 -1
  50. package/dist/cjs/config/access.d.cts +5 -2
  51. package/dist/cjs/config/access.d.ts +5 -2
  52. package/dist/cjs/config/access.js +34 -14
  53. package/dist/cjs/config/access.js.map +1 -1
  54. package/dist/cjs/config/index.d.cts +4 -1
  55. package/dist/cjs/config/index.d.ts +4 -1
  56. package/dist/cjs/config/index.js +12 -2
  57. package/dist/cjs/config/index.js.map +1 -1
  58. package/dist/cjs/config/load.d.cts +6 -1
  59. package/dist/cjs/config/load.d.ts +6 -1
  60. package/dist/cjs/config/load.js +87 -15
  61. package/dist/cjs/config/load.js.map +1 -1
  62. package/dist/cjs/config/resolve.js +1 -1
  63. package/dist/cjs/config/resolve.js.map +1 -1
  64. package/dist/cjs/config/signals.d.cts +4 -0
  65. package/dist/cjs/config/signals.d.ts +4 -0
  66. package/dist/cjs/config/signals.js +30 -0
  67. package/dist/cjs/config/signals.js.map +1 -0
  68. package/dist/cjs/config/types.d.cts +6 -4
  69. package/dist/cjs/config/types.d.ts +6 -4
  70. package/dist/cjs/config/types.js +1 -1
  71. package/dist/cjs/config/types.js.map +1 -1
  72. package/dist/cjs/config/validate.js +121 -12
  73. package/dist/cjs/config/validate.js.map +1 -1
  74. package/dist/cjs/db/open.d.cts +1 -1
  75. package/dist/cjs/db/open.d.ts +1 -1
  76. package/dist/cjs/db/open.js +10 -3
  77. package/dist/cjs/db/open.js.map +1 -1
  78. package/dist/cjs/db/reconcile.d.cts +1 -0
  79. package/dist/cjs/db/reconcile.d.ts +1 -0
  80. package/dist/cjs/db/reconcile.js +20 -3
  81. package/dist/cjs/db/reconcile.js.map +1 -1
  82. package/dist/cjs/embed/cohere.d.cts +2 -0
  83. package/dist/cjs/embed/cohere.d.ts +2 -0
  84. package/dist/cjs/embed/cohere.js +238 -0
  85. package/dist/cjs/embed/cohere.js.map +1 -0
  86. package/dist/cjs/embed/http.d.cts +2 -0
  87. package/dist/cjs/embed/http.d.ts +2 -0
  88. package/dist/cjs/embed/http.js +258 -0
  89. package/dist/cjs/embed/http.js.map +1 -0
  90. package/dist/cjs/embed/identity.d.cts +13 -0
  91. package/dist/cjs/embed/identity.d.ts +13 -0
  92. package/dist/cjs/embed/identity.js +194 -0
  93. package/dist/cjs/embed/identity.js.map +1 -0
  94. package/dist/cjs/embed/langfit.d.cts +6 -0
  95. package/dist/cjs/embed/langfit.d.ts +6 -0
  96. package/dist/cjs/embed/langfit.js +326 -0
  97. package/dist/cjs/embed/langfit.js.map +1 -0
  98. package/dist/cjs/embed/languages.d.cts +3 -0
  99. package/dist/cjs/embed/languages.d.ts +3 -0
  100. package/dist/cjs/embed/languages.js +98 -0
  101. package/dist/cjs/embed/languages.js.map +1 -0
  102. package/dist/cjs/embed/openai.d.cts +2 -0
  103. package/dist/cjs/embed/openai.d.ts +2 -0
  104. package/dist/cjs/embed/openai.js +268 -0
  105. package/dist/cjs/embed/openai.js.map +1 -0
  106. package/dist/cjs/embed/query.d.cts +21 -0
  107. package/dist/cjs/embed/query.d.ts +21 -0
  108. package/dist/cjs/embed/query.js +610 -0
  109. package/dist/cjs/embed/query.js.map +1 -0
  110. package/dist/cjs/embed/registry.d.cts +3 -0
  111. package/dist/cjs/embed/registry.d.ts +3 -0
  112. package/dist/cjs/embed/registry.js +114 -0
  113. package/dist/cjs/embed/registry.js.map +1 -0
  114. package/dist/cjs/embed/static.d.cts +2 -0
  115. package/dist/cjs/embed/static.d.ts +2 -0
  116. package/dist/cjs/embed/static.js +367 -0
  117. package/dist/cjs/embed/static.js.map +1 -0
  118. package/dist/cjs/embed/store.d.cts +8 -0
  119. package/dist/cjs/embed/store.d.ts +8 -0
  120. package/dist/cjs/embed/store.js +498 -0
  121. package/dist/cjs/embed/store.js.map +1 -0
  122. package/dist/cjs/embed/types.d.cts +8 -0
  123. package/dist/cjs/embed/types.d.ts +8 -0
  124. package/dist/cjs/embed/types.js +7 -0
  125. package/dist/cjs/embed/types.js.map +1 -0
  126. package/dist/cjs/errors.d.cts +1 -1
  127. package/dist/cjs/errors.d.ts +1 -1
  128. package/dist/cjs/errors.js +15 -24
  129. package/dist/cjs/errors.js.map +1 -1
  130. package/dist/cjs/features/embed.d.cts +4 -27
  131. package/dist/cjs/features/embed.d.ts +4 -27
  132. package/dist/cjs/features/embed.js +6 -978
  133. package/dist/cjs/features/embed.js.map +1 -1
  134. package/dist/cjs/features/links.js +4 -2
  135. package/dist/cjs/features/links.js.map +1 -1
  136. package/dist/cjs/features/rank.js +1 -1
  137. package/dist/cjs/features/tags.js +4 -2
  138. package/dist/cjs/features/tags.js.map +1 -1
  139. package/dist/cjs/fences.js.map +1 -1
  140. package/dist/cjs/graph.js +5 -3
  141. package/dist/cjs/graph.js.map +1 -1
  142. package/dist/cjs/index.d.cts +1 -1
  143. package/dist/cjs/index.d.ts +1 -1
  144. package/dist/cjs/index.js.map +1 -1
  145. package/dist/cjs/output.d.cts +2 -2
  146. package/dist/cjs/output.d.ts +2 -2
  147. package/dist/cjs/output.js +15 -8
  148. package/dist/cjs/output.js.map +1 -1
  149. package/dist/cjs/scan.js +13 -8
  150. package/dist/cjs/scan.js.map +1 -1
  151. package/dist/cjs/segment.js +67 -14
  152. package/dist/cjs/segment.js.map +1 -1
  153. package/dist/cjs/traverse.js +4 -2
  154. package/dist/cjs/traverse.js.map +1 -1
  155. package/dist/cjs/watch.js +2 -5
  156. package/dist/cjs/watch.js.map +1 -1
  157. package/dist/esm/cli/download.js +9 -8
  158. package/dist/esm/cli/download.js.map +1 -1
  159. package/dist/esm/cli/index.d.ts +1 -1
  160. package/dist/esm/cli/index.js +1 -1
  161. package/dist/esm/cli/index.js.map +1 -1
  162. package/dist/esm/cli/init.js +32 -6
  163. package/dist/esm/cli/init.js.map +1 -1
  164. package/dist/esm/cli/status.js +36 -8
  165. package/dist/esm/cli/status.js.map +1 -1
  166. package/dist/esm/commands/related.js +14 -10
  167. package/dist/esm/commands/related.js.map +1 -1
  168. package/dist/esm/commands/search.js +27 -78
  169. package/dist/esm/commands/search.js.map +1 -1
  170. package/dist/esm/commands/signals.d.ts +18 -0
  171. package/dist/esm/commands/signals.js +78 -0
  172. package/dist/esm/commands/signals.js.map +1 -0
  173. package/dist/esm/commands/status.d.ts +2 -2
  174. package/dist/esm/commands/status.js +2 -2
  175. package/dist/esm/commands/status.js.map +1 -1
  176. package/dist/esm/config/access.d.ts +5 -2
  177. package/dist/esm/config/access.js +31 -12
  178. package/dist/esm/config/access.js.map +1 -1
  179. package/dist/esm/config/index.d.ts +4 -1
  180. package/dist/esm/config/index.js +2 -1
  181. package/dist/esm/config/index.js.map +1 -1
  182. package/dist/esm/config/load.d.ts +6 -1
  183. package/dist/esm/config/load.js +67 -9
  184. package/dist/esm/config/load.js.map +1 -1
  185. package/dist/esm/config/resolve.js +2 -2
  186. package/dist/esm/config/resolve.js.map +1 -1
  187. package/dist/esm/config/signals.d.ts +4 -0
  188. package/dist/esm/config/signals.js +14 -0
  189. package/dist/esm/config/signals.js.map +1 -0
  190. package/dist/esm/config/types.d.ts +6 -4
  191. package/dist/esm/config/types.js +1 -1
  192. package/dist/esm/config/types.js.map +1 -1
  193. package/dist/esm/config/validate.js +58 -11
  194. package/dist/esm/config/validate.js.map +1 -1
  195. package/dist/esm/db/open.d.ts +1 -1
  196. package/dist/esm/db/open.js +7 -2
  197. package/dist/esm/db/open.js.map +1 -1
  198. package/dist/esm/db/reconcile.d.ts +1 -0
  199. package/dist/esm/db/reconcile.js +10 -0
  200. package/dist/esm/db/reconcile.js.map +1 -1
  201. package/dist/esm/embed/cohere.d.ts +2 -0
  202. package/dist/esm/embed/cohere.js +46 -0
  203. package/dist/esm/embed/cohere.js.map +1 -0
  204. package/dist/esm/embed/http.d.ts +2 -0
  205. package/dist/esm/embed/http.js +33 -0
  206. package/dist/esm/embed/http.js.map +1 -0
  207. package/dist/esm/embed/identity.d.ts +13 -0
  208. package/dist/esm/embed/identity.js +92 -0
  209. package/dist/esm/embed/identity.js.map +1 -0
  210. package/dist/esm/embed/langfit.d.ts +6 -0
  211. package/dist/esm/embed/langfit.js +44 -0
  212. package/dist/esm/embed/langfit.js.map +1 -0
  213. package/dist/esm/embed/languages.d.ts +3 -0
  214. package/dist/esm/embed/languages.js +80 -0
  215. package/dist/esm/embed/languages.js.map +1 -0
  216. package/dist/esm/embed/openai.d.ts +2 -0
  217. package/dist/esm/embed/openai.js +49 -0
  218. package/dist/esm/embed/openai.js.map +1 -0
  219. package/dist/esm/embed/query.d.ts +21 -0
  220. package/dist/esm/embed/query.js +181 -0
  221. package/dist/esm/embed/query.js.map +1 -0
  222. package/dist/esm/embed/registry.d.ts +3 -0
  223. package/dist/esm/embed/registry.js +45 -0
  224. package/dist/esm/embed/registry.js.map +1 -0
  225. package/dist/esm/embed/static.d.ts +2 -0
  226. package/dist/esm/embed/static.js +72 -0
  227. package/dist/esm/embed/static.js.map +1 -0
  228. package/dist/esm/embed/store.d.ts +8 -0
  229. package/dist/esm/embed/store.js +123 -0
  230. package/dist/esm/embed/store.js.map +1 -0
  231. package/dist/esm/embed/types.d.ts +8 -0
  232. package/dist/esm/embed/types.js +3 -0
  233. package/dist/esm/embed/types.js.map +1 -0
  234. package/dist/esm/errors.d.ts +1 -1
  235. package/dist/esm/errors.js.map +1 -1
  236. package/dist/esm/features/embed.d.ts +4 -27
  237. package/dist/esm/features/embed.js +0 -346
  238. package/dist/esm/features/embed.js.map +1 -1
  239. package/dist/esm/fences.js.map +1 -1
  240. package/dist/esm/index.d.ts +1 -1
  241. package/dist/esm/index.js.map +1 -1
  242. package/dist/esm/output.d.ts +2 -2
  243. package/dist/esm/output.js +6 -2
  244. package/dist/esm/output.js.map +1 -1
  245. package/dist/esm/scan.js +7 -4
  246. package/dist/esm/scan.js.map +1 -1
  247. package/dist/esm/segment.js +49 -19
  248. package/dist/esm/segment.js.map +1 -1
  249. package/package.json +9 -1
  250. package/schema.json +14 -7
  251. package/skills/sense/SKILL.md +21 -5
  252. package/skills/sense-setup/EXAMPLES.md +6 -6
  253. package/skills/sense-setup/SKILL.md +6 -4
@@ -20,10 +20,46 @@ var _nodepath = require("node:path");
20
20
  var _indexts = require("../commands/index.js");
21
21
  var _indexts1 = require("../config/index.js");
22
22
  var _indexts2 = require("../db/index.js");
23
- var _embedts = require("../features/embed.js");
23
+ var _httpts = require("../embed/http.js");
24
+ var _langfitts = require("../embed/langfit.js");
25
+ var _storets = require("../embed/store.js");
24
26
  var _outputts = require("../output.js");
25
27
  var _indexts3 = require("./index.js");
26
28
  var _sharedts = require("./shared.js");
29
+ function _array_like_to_array(arr, len) {
30
+ if (len == null || len > arr.length) len = arr.length;
31
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
32
+ return arr2;
33
+ }
34
+ function _array_with_holes(arr) {
35
+ if (Array.isArray(arr)) return arr;
36
+ }
37
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
38
+ try {
39
+ var info = gen[key](arg);
40
+ var value = info.value;
41
+ } catch (error) {
42
+ reject(error);
43
+ return;
44
+ }
45
+ if (info.done) resolve(value);
46
+ else Promise.resolve(value).then(_next, _throw);
47
+ }
48
+ function _async_to_generator(fn) {
49
+ return function() {
50
+ var self = this, args = arguments;
51
+ return new Promise(function(resolve, reject) {
52
+ var gen = fn.apply(self, args);
53
+ function _next(value) {
54
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
55
+ }
56
+ function _throw(err) {
57
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
58
+ }
59
+ _next(undefined);
60
+ });
61
+ };
62
+ }
27
63
  function _define_property(obj, key, value) {
28
64
  if (key in obj) {
29
65
  Object.defineProperty(obj, key, {
@@ -32,11 +68,36 @@ function _define_property(obj, key, value) {
32
68
  configurable: true,
33
69
  writable: true
34
70
  });
35
- } else {
36
- obj[key] = value;
37
- }
71
+ } else obj[key] = value;
38
72
  return obj;
39
73
  }
74
+ function _iterable_to_array_limit(arr, i) {
75
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
76
+ if (_i == null) return;
77
+ var _arr = [];
78
+ var _n = true;
79
+ var _d = false;
80
+ var _s, _e;
81
+ try {
82
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
83
+ _arr.push(_s.value);
84
+ if (i && _arr.length === i) break;
85
+ }
86
+ } catch (err) {
87
+ _d = true;
88
+ _e = err;
89
+ } finally{
90
+ try {
91
+ if (!_n && _i["return"] != null) _i["return"]();
92
+ } finally{
93
+ if (_d) throw _e;
94
+ }
95
+ }
96
+ return _arr;
97
+ }
98
+ function _non_iterable_rest() {
99
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
100
+ }
40
101
  function _object_spread(target) {
41
102
  for(var i = 1; i < arguments.length; i++){
42
103
  var source = arguments[i] != null ? arguments[i] : {};
@@ -52,6 +113,116 @@ function _object_spread(target) {
52
113
  }
53
114
  return target;
54
115
  }
116
+ function _sliced_to_array(arr, i) {
117
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
118
+ }
119
+ function _ts_generator(thisArg, body) {
120
+ var f, y, t, _ = {
121
+ label: 0,
122
+ sent: function() {
123
+ if (t[0] & 1) throw t[1];
124
+ return t[1];
125
+ },
126
+ trys: [],
127
+ ops: []
128
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
129
+ return d(g, "next", {
130
+ value: verb(0)
131
+ }), d(g, "throw", {
132
+ value: verb(1)
133
+ }), d(g, "return", {
134
+ value: verb(2)
135
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
136
+ value: function() {
137
+ return this;
138
+ }
139
+ }), g;
140
+ function verb(n) {
141
+ return function(v) {
142
+ return step([
143
+ n,
144
+ v
145
+ ]);
146
+ };
147
+ }
148
+ function step(op) {
149
+ if (f) throw new TypeError("Generator is already executing.");
150
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
151
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
152
+ if (y = 0, t) op = [
153
+ op[0] & 2,
154
+ t.value
155
+ ];
156
+ switch(op[0]){
157
+ case 0:
158
+ case 1:
159
+ t = op;
160
+ break;
161
+ case 4:
162
+ _.label++;
163
+ return {
164
+ value: op[1],
165
+ done: false
166
+ };
167
+ case 5:
168
+ _.label++;
169
+ y = op[1];
170
+ op = [
171
+ 0
172
+ ];
173
+ continue;
174
+ case 7:
175
+ op = _.ops.pop();
176
+ _.trys.pop();
177
+ continue;
178
+ default:
179
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
180
+ _ = 0;
181
+ continue;
182
+ }
183
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
184
+ _.label = op[1];
185
+ break;
186
+ }
187
+ if (op[0] === 6 && _.label < t[1]) {
188
+ _.label = t[1];
189
+ t = op;
190
+ break;
191
+ }
192
+ if (t && _.label < t[2]) {
193
+ _.label = t[2];
194
+ _.ops.push(op);
195
+ break;
196
+ }
197
+ if (t[2]) _.ops.pop();
198
+ _.trys.pop();
199
+ continue;
200
+ }
201
+ op = body.call(thisArg, _);
202
+ } catch (e) {
203
+ op = [
204
+ 6,
205
+ e
206
+ ];
207
+ y = 0;
208
+ } finally{
209
+ f = t = 0;
210
+ }
211
+ if (op[0] & 5) throw op[1];
212
+ return {
213
+ value: op[0] ? op[1] : void 0,
214
+ done: true
215
+ };
216
+ }
217
+ }
218
+ function _unsupported_iterable_to_array(o, minLen) {
219
+ if (!o) return;
220
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
221
+ var n = Object.prototype.toString.call(o).slice(8, -1);
222
+ if (n === "Object" && o.constructor) n = o.constructor.name;
223
+ if (n === "Map" || n === "Set") return Array.from(n);
224
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
225
+ }
55
226
  // status names what you cannot read off the config file: locations sense chose, values it
56
227
  // derived, state it stored. Config content is not echoed -- the config line says which file to
57
228
  // read, and duplicating its globs here would create two places that disagree after an edit.
@@ -82,106 +253,177 @@ function redactUrl(url) {
82
253
  return url;
83
254
  }
84
255
  }
256
+ // A stopped Ollama/LM Studio/Cohere endpoint prints identically to a running one otherwise; any
257
+ // HTTP response counts as reachable (probeReachable), so this only distinguishes up from down.
258
+ function embedReachable(e) {
259
+ return _async_to_generator(function() {
260
+ var _e_url, base;
261
+ return _ts_generator(this, function(_state) {
262
+ if (e.provider === 'static' || e.provider === 'openai' && !e.url) return [
263
+ 2,
264
+ null
265
+ ];
266
+ base = ((_e_url = e.url) !== null && _e_url !== void 0 ? _e_url : 'https://api.cohere.com').replace(/\/+$/, '');
267
+ return [
268
+ 2,
269
+ (0, _httpts.probeReachable)(e.provider === 'openai' ? "".concat(base, "/models") : base)
270
+ ];
271
+ });
272
+ })();
273
+ }
85
274
  var status = function status(ctx) {
86
- var _process_env_e_key, _cfg_migratedFrom, _cfg_unknownKeys, _cfg_queries;
87
- var values = (0, _sharedts.parse)(ctx.argv, "usage: ".concat(ctx.name, " ").concat(_indexts3.USAGE.status), _object_spread({}, _sharedts.FORMAT, _sharedts.CONFIG)).values;
88
- var format = (0, _sharedts.formatOf)(values);
89
- var cfg = ctx.resolveConfig(values.config);
90
- var _open = (0, _indexts2.open)(cfg), db = _open.db, dbPath = _open.dbPath, warnings = _open.warnings;
91
- (0, _sharedts.printWarnings)(warnings);
92
- var features = (0, _indexts1.featureStates)(cfg);
93
- var e = (0, _indexts1.embedConfig)(cfg);
94
- var hasModel = e ? (0, _embedts.modelPresent)(cfg) : false;
95
- var vectors = e ? vectorState(db) : null;
96
- var presets = (0, _indexts.presetCoverage)(db, cfg);
97
- var heartbeat = (0, _indexts2.getMeta)(db, 'watch_heartbeat');
98
- // Derived at open() (F): 3x the largest reconcile this cache has ever held its write
99
- // transaction for, floored at 30s -- read back from the connection rather than
100
- // recomputed here, so this always reports what open() actually set.
101
- var busyTimeoutMs = db.prepare('PRAGMA busy_timeout').get().timeout;
102
- // The env var holds the token; only its name and whether it is set are ever reported.
103
- var keyEnv = (e === null || e === void 0 ? void 0 : e.key) ? {
104
- name: e.key,
105
- set: ((_process_env_e_key = process.env[e.key]) !== null && _process_env_e_key !== void 0 ? _process_env_e_key : '') !== ''
106
- } : null;
107
- var result = {
108
- config: cfg.configPath,
109
- configVersion: _indexts1.SUPPORTED_CONFIG_VERSION,
110
- migratedFrom: (_cfg_migratedFrom = cfg.migratedFrom) !== null && _cfg_migratedFrom !== void 0 ? _cfg_migratedFrom : null,
111
- unknownConfigKeys: (_cfg_unknownKeys = cfg.unknownKeys) !== null && _cfg_unknownKeys !== void 0 ? _cfg_unknownKeys : null,
112
- tree: cfg.baseDir,
113
- cache: (0, _nodepath.dirname)(dbPath),
114
- db: dbPath,
115
- cacheSchema: _indexts2.SCHEMA_VERSION,
116
- docs: (0, _indexts2.docCount)(db),
117
- unparseableFrontmatter: parseErrorCount(db),
118
- features: features.on,
119
- featuresOff: features.off,
120
- embed: e ? _object_spread({
121
- type: e.type,
122
- model: e.model,
123
- dir: e.type === 'static' ? (0, _embedts.modelDir)(e.model) : null,
124
- url: e.url ? redactUrl(e.url) : null,
125
- keyEnv: keyEnv,
126
- downloaded: hasModel
127
- }, vectors !== null && vectors !== void 0 ? vectors : {}) : null,
128
- presets: presets,
129
- queries: Object.keys((_cfg_queries = cfg.queries) !== null && _cfg_queries !== void 0 ? _cfg_queries : {}).length,
130
- watcherPid: (0, _indexts2.getMeta)(db, 'watch_pid'),
131
- watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null,
132
- busyTimeoutMs: busyTimeoutMs
133
- };
134
- if (format === 'json') {
135
- console.log(JSON.stringify(result, null, 2));
136
- } else {
137
- var migrated = cfg.migratedFrom !== undefined ? ", migrated from v".concat(cfg.migratedFrom, " on this run") : '';
138
- console.log("config: ".concat(result.config, " (v").concat(_indexts1.SUPPORTED_CONFIG_VERSION).concat(migrated, ")"));
139
- // A load-time stderr warning has scrolled away by the time anyone looks here.
140
- if (cfg.unknownKeys) console.log(" unknown keys, ignored: ".concat(cfg.unknownKeys.join(', ')));
141
- console.log("tree: ".concat(result.tree));
142
- console.log("cache: ".concat(result.cache, " (schema ").concat(_indexts2.SCHEMA_VERSION, "; delete this directory to reset)"));
143
- console.log("docs: ".concat(result.docs).concat(result.unparseableFrontmatter > 0 ? " (".concat(result.unparseableFrontmatter, " with unparseable frontmatter: WHERE _parse_error IS NOT NULL)") : ''));
144
- console.log('');
145
- console.log((0, _outputts.featuresLine)(features));
146
- // One authoritative block, off states included: an absent model reads as a degraded search,
147
- // not as an empty corpus.
148
- if (!e) console.log('embed: off (no preset asks for vectors)');
149
- else {
150
- console.log("embed: ".concat(e.type, " ").concat(e.model));
151
- if (e.type === 'static') console.log(" model: ".concat((0, _embedts.modelDir)(e.model), " (").concat(hasModel ? 'present' : "missing, ".concat((0, _embedts.isDownloadable)(e.model) ? "run `".concat(ctx.name, " download`") : "no ".concat(_embedts.MODEL_FILENAMES, " in that directory")), ")"));
152
- if (e.url) console.log(" url: ".concat(redactUrl(e.url)));
153
- if (keyEnv) console.log(" key: env ".concat(keyEnv.name, " (").concat(keyEnv.set ? 'set' : 'NOT SET', ")"));
154
- if (!hasModel) console.log(' vectors: off until the model is present; search runs on words and links');
155
- else if (vectors) console.log(" vectors: ".concat(vectors.embedded, " embedded, ").concat(vectors.pending, " pending (embedded on the first semantic search)"));
156
- }
157
- console.log('');
158
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
159
- try {
160
- for(var _iterator = (0, _outputts.presetsLines)(presets)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
161
- var line = _step.value;
162
- console.log(line);
275
+ return _async_to_generator(function() {
276
+ var _languageDistribution, _process_env_e_key, _cfg_migratedFrom, _cfg_unknownKeys, _cfg_queries, values, format, cfg, _open, db, dbPath, warnings, features, e, hasModel, reachable, _tmp, vectors, presets, staticLanguages, declaredLanguages, detectedLanguages, heartbeat, busyTimeoutMs, keyEnv, result, migrated, shown, total, breakdown, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, line, pid;
277
+ return _ts_generator(this, function(_state) {
278
+ switch(_state.label){
279
+ case 0:
280
+ values = (0, _sharedts.parse)(ctx.argv, "usage: ".concat(ctx.name, " ").concat(_indexts3.USAGE.status), _object_spread({}, _sharedts.FORMAT, _sharedts.CONFIG)).values;
281
+ format = (0, _sharedts.formatOf)(values);
282
+ cfg = ctx.resolveConfig(values.config);
283
+ _open = (0, _indexts2.open)(cfg), db = _open.db, dbPath = _open.dbPath, warnings = _open.warnings;
284
+ (0, _sharedts.printWarnings)(warnings);
285
+ features = (0, _indexts1.featureStates)(cfg);
286
+ e = (0, _indexts1.embedConfig)(cfg);
287
+ hasModel = e ? (0, _storets.modelPresent)(cfg) : false;
288
+ if (!e) return [
289
+ 3,
290
+ 2
291
+ ];
292
+ return [
293
+ 4,
294
+ embedReachable(e)
295
+ ];
296
+ case 1:
297
+ _tmp = _state.sent();
298
+ return [
299
+ 3,
300
+ 3
301
+ ];
302
+ case 2:
303
+ _tmp = null;
304
+ _state.label = 3;
305
+ case 3:
306
+ reachable = _tmp;
307
+ vectors = e ? vectorState(db) : null;
308
+ presets = (0, _indexts.presetCoverage)(db, cfg);
309
+ staticLanguages = e && e.provider === 'static' ? (0, _storets.readLanguages)(e.model) : undefined;
310
+ declaredLanguages = staticLanguages && staticLanguages.length > 0 ? staticLanguages : null;
311
+ detectedLanguages = (_languageDistribution = (0, _langfitts.languageDistribution)(db)) !== null && _languageDistribution !== void 0 ? _languageDistribution : null;
312
+ heartbeat = (0, _indexts2.getMeta)(db, 'watch_heartbeat');
313
+ // Derived at open() (F): 3x the largest reconcile this cache has ever held its write
314
+ // transaction for, floored at 30s -- read back from the connection rather than
315
+ // recomputed here, so this always reports what open() actually set.
316
+ busyTimeoutMs = db.prepare('PRAGMA busy_timeout').get().timeout;
317
+ // The env var holds the token; only its name and whether it is set are ever reported.
318
+ keyEnv = (e === null || e === void 0 ? void 0 : e.key) ? {
319
+ name: e.key,
320
+ set: ((_process_env_e_key = process.env[e.key]) !== null && _process_env_e_key !== void 0 ? _process_env_e_key : '') !== ''
321
+ } : null;
322
+ result = {
323
+ config: cfg.configPath,
324
+ configVersion: _indexts1.SUPPORTED_CONFIG_VERSION,
325
+ migratedFrom: (_cfg_migratedFrom = cfg.migratedFrom) !== null && _cfg_migratedFrom !== void 0 ? _cfg_migratedFrom : null,
326
+ unknownConfigKeys: (_cfg_unknownKeys = cfg.unknownKeys) !== null && _cfg_unknownKeys !== void 0 ? _cfg_unknownKeys : null,
327
+ tree: cfg.baseDir,
328
+ cache: (0, _nodepath.dirname)(dbPath),
329
+ db: dbPath,
330
+ cacheSchema: _indexts2.SCHEMA_VERSION,
331
+ docs: (0, _indexts2.docCount)(db),
332
+ unparseableFrontmatter: parseErrorCount(db),
333
+ features: features.on,
334
+ featuresOff: features.off,
335
+ embed: e ? _object_spread({
336
+ provider: e.provider,
337
+ model: e.model,
338
+ dir: e.provider === 'static' ? (0, _storets.modelDir)(e.model) : null,
339
+ url: e.url ? redactUrl(e.url) : null,
340
+ reachable: reachable,
341
+ keyEnv: keyEnv,
342
+ downloaded: hasModel,
343
+ languages: declaredLanguages,
344
+ detectedLanguages: detectedLanguages
345
+ }, vectors !== null && vectors !== void 0 ? vectors : {}) : null,
346
+ presets: presets,
347
+ queries: Object.keys((_cfg_queries = cfg.queries) !== null && _cfg_queries !== void 0 ? _cfg_queries : {}).length,
348
+ watcherPid: (0, _indexts2.getMeta)(db, 'watch_pid'),
349
+ watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null,
350
+ busyTimeoutMs: busyTimeoutMs
351
+ };
352
+ if (format === 'json') {
353
+ console.log(JSON.stringify(result, null, 2));
354
+ } else {
355
+ migrated = cfg.migratedFrom !== undefined ? ", migrated from v".concat(cfg.migratedFrom, " on this run") : '';
356
+ console.log("config: ".concat(result.config, " (v").concat(_indexts1.SUPPORTED_CONFIG_VERSION).concat(migrated, ")"));
357
+ // A load-time stderr warning has scrolled away by the time anyone looks here.
358
+ if (cfg.unknownKeys) console.log(" unknown keys, ignored: ".concat(cfg.unknownKeys.join(', ')));
359
+ console.log("tree: ".concat(result.tree));
360
+ console.log("cache: ".concat(result.cache, " (schema ").concat(_indexts2.SCHEMA_VERSION, "; delete this directory to reset)"));
361
+ console.log("docs: ".concat(result.docs).concat(result.unparseableFrontmatter > 0 ? " (".concat(result.unparseableFrontmatter, " with unparseable frontmatter: WHERE _parse_error IS NOT NULL)") : ''));
362
+ console.log('');
363
+ console.log((0, _outputts.featuresLine)(features));
364
+ // One authoritative block, off states included: an absent model reads as a degraded search,
365
+ // not as an empty corpus.
366
+ if (!e) console.log('embed: off (no preset asks for vectors)');
367
+ else {
368
+ console.log("embed: ".concat(e.provider, " ").concat(e.model));
369
+ if (e.provider === 'static') console.log(" model: ".concat((0, _storets.modelDir)(e.model), " (").concat(hasModel ? 'present' : "missing, ".concat((0, _storets.isDownloadable)(e.model) ? "fetches automatically at first search, or run `".concat(ctx.name, " download` to prefetch") : "no ".concat(_storets.MODEL_FILENAMES, " in that directory")), ")"));
370
+ if (declaredLanguages) console.log(" languages: ".concat(declaredLanguages.join(', '), " (declared by the model card)"));
371
+ // Cohere defaults to api.cohere.com with no url in the config; show it anyway so the
372
+ // reachability probe below has something to name.
373
+ if (e.url || reachable !== null) {
374
+ shown = e.url ? redactUrl(e.url) : 'https://api.cohere.com (default)';
375
+ console.log(" url: ".concat(shown).concat(reachable === null ? '' : reachable ? ' (reachable)' : ' (unreachable)'));
376
+ }
377
+ if (keyEnv) console.log(" key: env ".concat(keyEnv.name, " (").concat(keyEnv.set ? 'set' : 'NOT SET', ")"));
378
+ if (!hasModel) console.log(' vectors: off until the model is present; search runs on words and links');
379
+ else if (vectors) console.log(" vectors: ".concat(vectors.embedded, " embedded, ").concat(vectors.pending, " pending (embedded on the first semantic search)"));
380
+ if (detectedLanguages) {
381
+ total = Object.values(detectedLanguages).reduce(function(a, b) {
382
+ return a + b;
383
+ }, 0);
384
+ breakdown = Object.entries(detectedLanguages).sort(function(a, b) {
385
+ return b[1] - a[1];
386
+ }).map(function(param) {
387
+ var _param = _sliced_to_array(param, 2), code = _param[0], n = _param[1];
388
+ return "".concat(code, " ").concat(Math.round(n / total * 100), "%");
389
+ }).join(', ');
390
+ console.log(" detected: ".concat(breakdown, " (").concat(total, " chunks classified)"));
391
+ }
392
+ }
393
+ console.log('');
394
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
395
+ try {
396
+ for(_iterator = (0, _outputts.presetsLines)(presets)[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
397
+ line = _step.value;
398
+ console.log(line);
399
+ }
400
+ } catch (err) {
401
+ _didIteratorError = true;
402
+ _iteratorError = err;
403
+ } finally{
404
+ try {
405
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
406
+ _iterator.return();
407
+ }
408
+ } finally{
409
+ if (_didIteratorError) {
410
+ throw _iteratorError;
411
+ }
412
+ }
413
+ }
414
+ console.log('');
415
+ console.log("queries: ".concat(result.queries, " saved (").concat(ctx.name, " --list)"));
416
+ pid = result.watcherPid ? "pid ".concat(result.watcherPid, ", ") : '';
417
+ console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : "watcher: ".concat(pid, "last heartbeat ").concat(result.watcherHeartbeatSecondsAgo, "s ago"));
418
+ console.log("sqlite: busy_timeout ".concat(result.busyTimeoutMs, "ms (derived: 3x the largest reconcile this cache has recorded, floored at 30000ms)"));
419
+ }
420
+ db.close();
421
+ return [
422
+ 2
423
+ ];
163
424
  }
164
- } catch (err) {
165
- _didIteratorError = true;
166
- _iteratorError = err;
167
- } finally{
168
- try {
169
- if (!_iteratorNormalCompletion && _iterator.return != null) {
170
- _iterator.return();
171
- }
172
- } finally{
173
- if (_didIteratorError) {
174
- throw _iteratorError;
175
- }
176
- }
177
- }
178
- console.log('');
179
- console.log("queries: ".concat(result.queries, " saved (").concat(ctx.name, " --list)"));
180
- var pid = result.watcherPid ? "pid ".concat(result.watcherPid, ", ") : '';
181
- console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: none' : "watcher: ".concat(pid, "last heartbeat ").concat(result.watcherHeartbeatSecondsAgo, "s ago"));
182
- console.log("sqlite: busy_timeout ".concat(result.busyTimeoutMs, "ms (derived: 3x the largest reconcile this cache has recorded, floored at 30000ms)"));
183
- }
184
- db.close();
425
+ });
426
+ })();
185
427
  };
186
428
  var _default = status;
187
429
  /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { dirname } from 'node:path';\nimport { presetCoverage } from '../commands/index.ts';\nimport { embedConfig, featureStates, SUPPORTED_CONFIG_VERSION } from '../config/index.ts';\nimport { docCount, getMeta, open, SCHEMA_VERSION } from '../db/index.ts';\nimport { isDownloadable, MODEL_FILENAMES, modelDir, modelPresent } from '../features/embed.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// status names what you cannot read off the config file: locations sense chose, values it\n// derived, state it stored. Config content is not echoed -- the config line says which file to\n// read, and 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\n// semantic-on preset with nothing embedded yet -- reported here because a fast reconcile 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\nfunction parseErrorCount(db: ReturnType<typeof open>['db']): number {\n const row = db.prepare(`SELECT COUNT(*) AS n FROM frontmatter WHERE \"_parse_error\" IS NOT NULL`).get() as { n: number };\n return row.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\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 hasModel = e ? modelPresent(cfg) : false;\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 // 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.baseDir,\n cache: dirname(dbPath),\n db: dbPath,\n cacheSchema: SCHEMA_VERSION,\n docs: docCount(db),\n unparseableFrontmatter: parseErrorCount(db),\n features: features.on,\n featuresOff: features.off,\n embed: e ? { type: e.type, model: e.model, dir: e.type === 'static' ? modelDir(e.model) : null, url: e.url ? redactUrl(e.url) : null, keyEnv, downloaded: hasModel, ...(vectors ?? {}) } : null,\n presets,\n queries: Object.keys(cfg.queries ?? {}).length,\n watcherPid: getMeta(db, 'watch_pid'),\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 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: ${result.tree}`);\n console.log(`cache: ${result.cache} (schema ${SCHEMA_VERSION}; 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.type} ${e.model}`);\n if (e.type === 'static') console.log(` model: ${modelDir(e.model)} (${hasModel ? 'present' : `missing, ${isDownloadable(e.model) ? `run \\`${ctx.name} download\\`` : `no ${MODEL_FILENAMES} in that directory`}`})`);\n if (e.url) console.log(` url: ${redactUrl(e.url)}`);\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 }\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 console.log(`sqlite: 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":["redactUrl","vectorState","db","row","prepare","get","parseErrorCount","n","url","parsed","URL","username","password","toString","replace","status","ctx","process","cfg","values","parse","argv","USAGE","name","FORMAT","CONFIG","format","formatOf","resolveConfig","config","open","dbPath","warnings","printWarnings","features","featureStates","e","embedConfig","hasModel","modelPresent","vectors","presets","presetCoverage","heartbeat","getMeta","busyTimeoutMs","timeout","keyEnv","key","set","env","result","configPath","configVersion","SUPPORTED_CONFIG_VERSION","migratedFrom","unknownConfigKeys","unknownKeys","tree","baseDir","cache","dirname","cacheSchema","SCHEMA_VERSION","docs","docCount","unparseableFrontmatter","on","featuresOff","off","embed","type","model","dir","modelDir","downloaded","queries","Object","keys","length","watcherPid","watcherHeartbeatSecondsAgo","Math","round","Date","now","console","log","JSON","stringify","migrated","undefined","join","featuresLine","isDownloadable","MODEL_FILENAMES","embedded","pending","presetsLines","line","pid","close"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { dirname } from 'node:path';\nimport { presetCoverage } from '../commands/index.ts';\nimport { embedConfig, featureStates, SUPPORTED_CONFIG_VERSION } from '../config/index.ts';\nimport { docCount, getMeta, open, SCHEMA_VERSION } from '../db/index.ts';\nimport { probeReachable } from '../embed/http.ts';\nimport { languageDistribution } from '../embed/langfit.ts';\nimport { isDownloadable, MODEL_FILENAMES, modelDir, modelPresent, readLanguages } from '../embed/store.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// status names what you cannot read off the config file: locations sense chose, values it\n// derived, state it stored. Config content is not echoed -- the config line says which file to\n// read, and 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\n// semantic-on preset with nothing embedded yet -- reported here because a fast reconcile 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\nfunction parseErrorCount(db: ReturnType<typeof open>['db']): number {\n const row = db.prepare(`SELECT COUNT(*) AS n FROM frontmatter WHERE \"_parse_error\" IS NOT NULL`).get() as { n: number };\n return row.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\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 { db, dbPath, warnings } = open(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 ? vectorState(db) : null;\n const presets = presetCoverage(db, cfg);\n const staticLanguages = e && e.provider === 'static' ? readLanguages(e.model) : undefined;\n const declaredLanguages = staticLanguages && staticLanguages.length > 0 ? staticLanguages : null;\n const detectedLanguages = languageDistribution(db) ?? null;\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 // 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.baseDir,\n cache: dirname(dbPath),\n db: dbPath,\n cacheSchema: SCHEMA_VERSION,\n docs: docCount(db),\n unparseableFrontmatter: parseErrorCount(db),\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, detectedLanguages, ...(vectors ?? {}) } : null,\n presets,\n queries: Object.keys(cfg.queries ?? {}).length,\n watcherPid: getMeta(db, 'watch_pid'),\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 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: ${result.tree}`);\n console.log(`cache: ${result.cache} (schema ${SCHEMA_VERSION}; 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) console.log(` languages: ${declaredLanguages.join(', ')} (declared by the model card)`);\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 console.log(`sqlite: 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":["redactUrl","vectorState","db","row","prepare","get","parseErrorCount","n","url","parsed","URL","username","password","toString","replace","embedReachable","e","base","provider","probeReachable","status","ctx","languageDistribution","process","cfg","values","format","open","dbPath","warnings","features","hasModel","reachable","vectors","presets","staticLanguages","declaredLanguages","detectedLanguages","heartbeat","busyTimeoutMs","keyEnv","result","migrated","shown","total","breakdown","line","pid","parse","argv","USAGE","name","FORMAT","CONFIG","formatOf","resolveConfig","config","printWarnings","featureStates","embedConfig","modelPresent","presetCoverage","readLanguages","model","undefined","length","getMeta","timeout","key","set","env","configPath","configVersion","SUPPORTED_CONFIG_VERSION","migratedFrom","unknownConfigKeys","unknownKeys","tree","baseDir","cache","dirname","cacheSchema","SCHEMA_VERSION","docs","docCount","unparseableFrontmatter","on","featuresOff","off","embed","dir","modelDir","downloaded","languages","queries","Object","keys","watcherPid","watcherHeartbeatSecondsAgo","Math","round","Date","now","console","log","JSON","stringify","join","featuresLine","isDownloadable","MODEL_FILENAMES","embedded","pending","reduce","a","b","entries","sort","map","code","presetsLines","close"],"mappings":"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"}
@@ -19,11 +19,8 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
19
19
  reject(error);
20
20
  return;
21
21
  }
22
- if (info.done) {
23
- resolve(value);
24
- } else {
25
- Promise.resolve(value).then(_next, _throw);
26
- }
22
+ if (info.done) resolve(value);
23
+ else Promise.resolve(value).then(_next, _throw);
27
24
  }
28
25
  function _async_to_generator(fn) {
29
26
  return function() {
@@ -48,9 +45,7 @@ function _define_property(obj, key, value) {
48
45
  configurable: true,
49
46
  writable: true
50
47
  });
51
- } else {
52
- obj[key] = value;
53
- }
48
+ } else obj[key] = value;
54
49
  return obj;
55
50
  }
56
51
  function _object_spread(target) {
@@ -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 { 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"}
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"}