sensemaking 0.2.0 → 0.3.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 (182) hide show
  1. package/README.md +107 -126
  2. package/dist/cjs/cli.js +172 -182
  3. package/dist/cjs/cli.js.map +1 -1
  4. package/dist/cjs/commands/find.d.cts +3 -0
  5. package/dist/cjs/commands/find.d.ts +3 -0
  6. package/dist/cjs/commands/find.js +73 -0
  7. package/dist/cjs/commands/find.js.map +1 -0
  8. package/dist/cjs/commands/index.d.cts +5 -0
  9. package/dist/cjs/commands/index.d.ts +5 -0
  10. package/dist/cjs/commands/index.js +94 -0
  11. package/dist/cjs/commands/index.js.map +1 -0
  12. package/dist/cjs/commands/init.d.cts +3 -0
  13. package/dist/cjs/commands/init.d.ts +3 -0
  14. package/dist/cjs/commands/init.js +18 -0
  15. package/dist/cjs/commands/init.js.map +1 -0
  16. package/dist/cjs/commands/map.d.cts +3 -0
  17. package/dist/cjs/commands/map.d.ts +3 -0
  18. package/dist/cjs/commands/map.js +21 -0
  19. package/dist/cjs/commands/map.js.map +1 -0
  20. package/dist/cjs/commands/named.d.cts +2 -0
  21. package/dist/cjs/commands/named.d.ts +2 -0
  22. package/dist/cjs/commands/named.js +23 -0
  23. package/dist/cjs/commands/named.js.map +1 -0
  24. package/dist/cjs/commands/peek.d.cts +3 -0
  25. package/dist/cjs/commands/peek.d.ts +3 -0
  26. package/dist/cjs/commands/peek.js +69 -0
  27. package/dist/cjs/commands/peek.js.map +1 -0
  28. package/dist/cjs/commands/query.d.cts +3 -0
  29. package/dist/cjs/commands/query.d.ts +3 -0
  30. package/dist/cjs/commands/query.js +43 -0
  31. package/dist/cjs/commands/query.js.map +1 -0
  32. package/dist/cjs/commands/rebuild.d.cts +3 -0
  33. package/dist/cjs/commands/rebuild.d.ts +3 -0
  34. package/dist/cjs/commands/rebuild.js +20 -0
  35. package/dist/cjs/commands/rebuild.js.map +1 -0
  36. package/dist/cjs/commands/status.d.cts +3 -0
  37. package/dist/cjs/commands/status.d.ts +3 -0
  38. package/dist/cjs/commands/status.js +24 -0
  39. package/dist/cjs/commands/status.js.map +1 -0
  40. package/dist/cjs/commands/types.d.cts +15 -0
  41. package/dist/cjs/commands/types.d.ts +15 -0
  42. package/dist/cjs/commands/types.js +5 -0
  43. package/dist/cjs/commands/types.js.map +1 -0
  44. package/dist/cjs/commands/vault.d.cts +6 -0
  45. package/dist/cjs/commands/vault.d.ts +6 -0
  46. package/dist/cjs/commands/vault.js +94 -0
  47. package/dist/cjs/commands/vault.js.map +1 -0
  48. package/dist/cjs/commands/watch.d.cts +3 -0
  49. package/dist/cjs/commands/watch.d.ts +3 -0
  50. package/dist/cjs/commands/watch.js +173 -0
  51. package/dist/cjs/commands/watch.js.map +1 -0
  52. package/dist/cjs/config.d.cts +11 -1
  53. package/dist/cjs/config.d.ts +11 -1
  54. package/dist/cjs/config.js +82 -9
  55. package/dist/cjs/config.js.map +1 -1
  56. package/dist/cjs/db.d.cts +1 -1
  57. package/dist/cjs/db.d.ts +1 -1
  58. package/dist/cjs/db.js +107 -16
  59. package/dist/cjs/db.js.map +1 -1
  60. package/dist/cjs/errors.d.cts +1 -1
  61. package/dist/cjs/errors.d.ts +1 -1
  62. package/dist/cjs/errors.js.map +1 -1
  63. package/dist/cjs/features/index.d.cts +7 -0
  64. package/dist/cjs/features/index.d.ts +7 -0
  65. package/dist/cjs/features/index.js +36 -0
  66. package/dist/cjs/features/index.js.map +1 -0
  67. package/dist/cjs/features/links.d.cts +4 -0
  68. package/dist/cjs/features/links.d.ts +4 -0
  69. package/dist/cjs/features/links.js +217 -0
  70. package/dist/cjs/features/links.js.map +1 -0
  71. package/dist/cjs/features/rank.d.cts +2 -0
  72. package/dist/cjs/features/rank.d.ts +2 -0
  73. package/dist/cjs/features/rank.js +95 -0
  74. package/dist/cjs/features/rank.js.map +1 -0
  75. package/dist/cjs/features/sections.d.cts +9 -0
  76. package/dist/cjs/features/sections.d.ts +9 -0
  77. package/dist/cjs/features/sections.js +54 -0
  78. package/dist/cjs/features/sections.js.map +1 -0
  79. package/dist/cjs/features/types.d.cts +11 -0
  80. package/dist/cjs/features/types.d.ts +11 -0
  81. package/dist/cjs/features/types.js +5 -0
  82. package/dist/cjs/features/types.js.map +1 -0
  83. package/dist/cjs/graph.d.cts +7 -0
  84. package/dist/cjs/graph.d.ts +7 -0
  85. package/dist/cjs/graph.js +237 -0
  86. package/dist/cjs/graph.js.map +1 -0
  87. package/dist/cjs/index.d.cts +9 -2
  88. package/dist/cjs/index.d.ts +9 -2
  89. package/dist/cjs/index.js +39 -0
  90. package/dist/cjs/index.js.map +1 -1
  91. package/dist/cjs/output.d.cts +21 -0
  92. package/dist/cjs/output.d.ts +21 -0
  93. package/dist/cjs/output.js +112 -3
  94. package/dist/cjs/output.js.map +1 -1
  95. package/dist/cjs/scan.d.cts +3 -1
  96. package/dist/cjs/scan.d.ts +3 -1
  97. package/dist/cjs/scan.js +62 -14
  98. package/dist/cjs/scan.js.map +1 -1
  99. package/dist/cjs/verbs.d.cts +31 -0
  100. package/dist/cjs/verbs.d.ts +31 -0
  101. package/dist/cjs/verbs.js +284 -0
  102. package/dist/cjs/verbs.js.map +1 -0
  103. package/dist/esm/cli.js +63 -107
  104. package/dist/esm/cli.js.map +1 -1
  105. package/dist/esm/commands/find.d.ts +3 -0
  106. package/dist/esm/commands/find.js +14 -0
  107. package/dist/esm/commands/find.js.map +1 -0
  108. package/dist/esm/commands/index.d.ts +5 -0
  109. package/dist/esm/commands/index.js +13 -0
  110. package/dist/esm/commands/index.js.map +1 -0
  111. package/dist/esm/commands/init.d.ts +3 -0
  112. package/dist/esm/commands/init.js +7 -0
  113. package/dist/esm/commands/init.js.map +1 -0
  114. package/dist/esm/commands/map.d.ts +3 -0
  115. package/dist/esm/commands/map.js +10 -0
  116. package/dist/esm/commands/map.js.map +1 -0
  117. package/dist/esm/commands/named.d.ts +2 -0
  118. package/dist/esm/commands/named.js +12 -0
  119. package/dist/esm/commands/named.js.map +1 -0
  120. package/dist/esm/commands/peek.d.ts +3 -0
  121. package/dist/esm/commands/peek.js +12 -0
  122. package/dist/esm/commands/peek.js.map +1 -0
  123. package/dist/esm/commands/query.d.ts +3 -0
  124. package/dist/esm/commands/query.js +7 -0
  125. package/dist/esm/commands/query.js.map +1 -0
  126. package/dist/esm/commands/rebuild.d.ts +3 -0
  127. package/dist/esm/commands/rebuild.js +9 -0
  128. package/dist/esm/commands/rebuild.js.map +1 -0
  129. package/dist/esm/commands/status.d.ts +3 -0
  130. package/dist/esm/commands/status.js +13 -0
  131. package/dist/esm/commands/status.js.map +1 -0
  132. package/dist/esm/commands/types.d.ts +15 -0
  133. package/dist/esm/commands/types.js +1 -0
  134. package/dist/esm/commands/types.js.map +1 -0
  135. package/dist/esm/commands/vault.d.ts +6 -0
  136. package/dist/esm/commands/vault.js +29 -0
  137. package/dist/esm/commands/vault.js.map +1 -0
  138. package/dist/esm/commands/watch.d.ts +3 -0
  139. package/dist/esm/commands/watch.js +19 -0
  140. package/dist/esm/commands/watch.js.map +1 -0
  141. package/dist/esm/config.d.ts +11 -1
  142. package/dist/esm/config.js +68 -12
  143. package/dist/esm/config.js.map +1 -1
  144. package/dist/esm/db.d.ts +1 -1
  145. package/dist/esm/db.js +27 -9
  146. package/dist/esm/db.js.map +1 -1
  147. package/dist/esm/errors.d.ts +1 -1
  148. package/dist/esm/errors.js.map +1 -1
  149. package/dist/esm/features/index.d.ts +7 -0
  150. package/dist/esm/features/index.js +14 -0
  151. package/dist/esm/features/index.js.map +1 -0
  152. package/dist/esm/features/links.d.ts +4 -0
  153. package/dist/esm/features/links.js +81 -0
  154. package/dist/esm/features/links.js.map +1 -0
  155. package/dist/esm/features/rank.d.ts +2 -0
  156. package/dist/esm/features/rank.js +17 -0
  157. package/dist/esm/features/rank.js.map +1 -0
  158. package/dist/esm/features/sections.d.ts +9 -0
  159. package/dist/esm/features/sections.js +41 -0
  160. package/dist/esm/features/sections.js.map +1 -0
  161. package/dist/esm/features/types.d.ts +11 -0
  162. package/dist/esm/features/types.js +3 -0
  163. package/dist/esm/features/types.js.map +1 -0
  164. package/dist/esm/graph.d.ts +7 -0
  165. package/dist/esm/graph.js +79 -0
  166. package/dist/esm/graph.js.map +1 -0
  167. package/dist/esm/index.d.ts +9 -2
  168. package/dist/esm/index.js +4 -1
  169. package/dist/esm/index.js.map +1 -1
  170. package/dist/esm/output.d.ts +21 -0
  171. package/dist/esm/output.js +28 -0
  172. package/dist/esm/output.js.map +1 -1
  173. package/dist/esm/scan.d.ts +3 -1
  174. package/dist/esm/scan.js +56 -7
  175. package/dist/esm/scan.js.map +1 -1
  176. package/dist/esm/verbs.d.ts +31 -0
  177. package/dist/esm/verbs.js +139 -0
  178. package/dist/esm/verbs.js.map +1 -0
  179. package/package.json +4 -4
  180. package/schema.json +23 -4
  181. package/skills/sense/EXAMPLES.md +46 -81
  182. package/skills/sense/SKILL.md +58 -92
@@ -0,0 +1,7 @@
1
+ export type Edge = [src: string, dst: string];
2
+ export declare function pagerank(nodes: string[], edges: Edge[], opts?: {
3
+ damping?: number;
4
+ iterations?: number;
5
+ personal?: Map<string, number>;
6
+ }): Map<string, number>;
7
+ export declare function personalizedRank(nodes: string[], edges: Edge[], seeds: Map<string, number>): Map<string, number>;
@@ -0,0 +1,7 @@
1
+ export type Edge = [src: string, dst: string];
2
+ export declare function pagerank(nodes: string[], edges: Edge[], opts?: {
3
+ damping?: number;
4
+ iterations?: number;
5
+ personal?: Map<string, number>;
6
+ }): Map<string, number>;
7
+ export declare function personalizedRank(nodes: string[], edges: Edge[], seeds: Map<string, number>): Map<string, number>;
@@ -0,0 +1,237 @@
1
+ // Link-graph math: PageRank at reconcile, personalized PageRank at query time. Pure JS, no deps.
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: Object.getOwnPropertyDescriptor(all, name).get
10
+ });
11
+ }
12
+ _export(exports, {
13
+ get pagerank () {
14
+ return pagerank;
15
+ },
16
+ get personalizedRank () {
17
+ return personalizedRank;
18
+ }
19
+ });
20
+ function _array_like_to_array(arr, len) {
21
+ if (len == null || len > arr.length) len = arr.length;
22
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
23
+ return arr2;
24
+ }
25
+ function _array_with_holes(arr) {
26
+ if (Array.isArray(arr)) return arr;
27
+ }
28
+ function _array_without_holes(arr) {
29
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
30
+ }
31
+ function _iterable_to_array(iter) {
32
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
33
+ }
34
+ function _iterable_to_array_limit(arr, i) {
35
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
36
+ if (_i == null) return;
37
+ var _arr = [];
38
+ var _n = true;
39
+ var _d = false;
40
+ var _s, _e;
41
+ try {
42
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
43
+ _arr.push(_s.value);
44
+ if (i && _arr.length === i) break;
45
+ }
46
+ } catch (err) {
47
+ _d = true;
48
+ _e = err;
49
+ } finally{
50
+ try {
51
+ if (!_n && _i["return"] != null) _i["return"]();
52
+ } finally{
53
+ if (_d) throw _e;
54
+ }
55
+ }
56
+ return _arr;
57
+ }
58
+ function _non_iterable_rest() {
59
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
60
+ }
61
+ function _non_iterable_spread() {
62
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
63
+ }
64
+ function _sliced_to_array(arr, i) {
65
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
66
+ }
67
+ function _to_consumable_array(arr) {
68
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
69
+ }
70
+ function _unsupported_iterable_to_array(o, minLen) {
71
+ if (!o) return;
72
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
73
+ var n = Object.prototype.toString.call(o).slice(8, -1);
74
+ if (n === "Object" && o.constructor) n = o.constructor.name;
75
+ if (n === "Map" || n === "Set") return Array.from(n);
76
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
77
+ }
78
+ function pagerank(nodes, edges) {
79
+ var opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
80
+ var _opts_damping, _opts_iterations;
81
+ var damping = (_opts_damping = opts.damping) !== null && _opts_damping !== void 0 ? _opts_damping : 0.85;
82
+ var iterations = (_opts_iterations = opts.iterations) !== null && _opts_iterations !== void 0 ? _opts_iterations : 30;
83
+ var n = nodes.length;
84
+ if (n === 0) return new Map();
85
+ var index = new Map(nodes.map(function(node, i) {
86
+ return [
87
+ node,
88
+ i
89
+ ];
90
+ }));
91
+ var out = nodes.map(function() {
92
+ return [];
93
+ });
94
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
95
+ try {
96
+ for(var _iterator = edges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
97
+ var _step_value = _sliced_to_array(_step.value, 2), src = _step_value[0], dst = _step_value[1];
98
+ var si = index.get(src);
99
+ var di = index.get(dst);
100
+ if (si !== undefined && di !== undefined) out[si].push(di);
101
+ }
102
+ } catch (err) {
103
+ _didIteratorError = true;
104
+ _iteratorError = err;
105
+ } finally{
106
+ try {
107
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
108
+ _iterator.return();
109
+ }
110
+ } finally{
111
+ if (_didIteratorError) {
112
+ throw _iteratorError;
113
+ }
114
+ }
115
+ }
116
+ var base;
117
+ if (opts.personal) {
118
+ base = nodes.map(function() {
119
+ return 0;
120
+ });
121
+ var total = 0;
122
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
123
+ try {
124
+ for(var _iterator1 = opts.personal[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
125
+ var _step_value1 = _sliced_to_array(_step1.value, 2), node = _step_value1[0], weight = _step_value1[1];
126
+ var i = index.get(node);
127
+ if (i !== undefined && weight > 0) {
128
+ base[i] = weight;
129
+ total += weight;
130
+ }
131
+ }
132
+ } catch (err) {
133
+ _didIteratorError1 = true;
134
+ _iteratorError1 = err;
135
+ } finally{
136
+ try {
137
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
138
+ _iterator1.return();
139
+ }
140
+ } finally{
141
+ if (_didIteratorError1) {
142
+ throw _iteratorError1;
143
+ }
144
+ }
145
+ }
146
+ if (total === 0) return new Map(nodes.map(function(node) {
147
+ return [
148
+ node,
149
+ 0
150
+ ];
151
+ }));
152
+ base = base.map(function(b) {
153
+ return b / total;
154
+ });
155
+ } else {
156
+ base = nodes.map(function() {
157
+ return 1 / n;
158
+ });
159
+ }
160
+ var rank = _to_consumable_array(base);
161
+ for(var iter = 0; iter < iterations; iter++){
162
+ var next = base.map(function(b) {
163
+ return (1 - damping) * b;
164
+ });
165
+ var dangling = 0;
166
+ for(var i1 = 0; i1 < n; i1++){
167
+ if (out[i1].length === 0) {
168
+ dangling += rank[i1];
169
+ continue;
170
+ }
171
+ var share = damping * rank[i1] / out[i1].length;
172
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
173
+ try {
174
+ for(var _iterator2 = out[i1][Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
175
+ var j = _step2.value;
176
+ next[j] += share;
177
+ }
178
+ } catch (err) {
179
+ _didIteratorError2 = true;
180
+ _iteratorError2 = err;
181
+ } finally{
182
+ try {
183
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
184
+ _iterator2.return();
185
+ }
186
+ } finally{
187
+ if (_didIteratorError2) {
188
+ throw _iteratorError2;
189
+ }
190
+ }
191
+ }
192
+ }
193
+ for(var i2 = 0; i2 < n; i2++)next[i2] += damping * dangling * base[i2];
194
+ rank = next;
195
+ }
196
+ return new Map(nodes.map(function(node, i) {
197
+ return [
198
+ node,
199
+ rank[i]
200
+ ];
201
+ }));
202
+ }
203
+ function personalizedRank(nodes, edges, seeds) {
204
+ var undirected = [];
205
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
206
+ try {
207
+ for(var _iterator = edges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
208
+ var _step_value = _sliced_to_array(_step.value, 2), src = _step_value[0], dst = _step_value[1];
209
+ undirected.push([
210
+ src,
211
+ dst
212
+ ], [
213
+ dst,
214
+ src
215
+ ]);
216
+ }
217
+ } catch (err) {
218
+ _didIteratorError = true;
219
+ _iteratorError = err;
220
+ } finally{
221
+ try {
222
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
223
+ _iterator.return();
224
+ }
225
+ } finally{
226
+ if (_didIteratorError) {
227
+ throw _iteratorError;
228
+ }
229
+ }
230
+ }
231
+ return pagerank(nodes, undirected, {
232
+ damping: 0.7,
233
+ iterations: 15,
234
+ personal: seeds
235
+ });
236
+ }
237
+ /* 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; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/graph.ts"],"sourcesContent":["// Link-graph math: PageRank at reconcile, personalized PageRank at query time. Pure JS, no deps.\n\nexport type Edge = [src: string, dst: string];\n\n// Power iteration. `personal` biases both teleport and dangling mass toward seed nodes;\n// without it this is plain PageRank (uniform base). Returns scores summing to ~1.\nexport function pagerank(nodes: string[], edges: Edge[], opts: { damping?: number; iterations?: number; personal?: Map<string, number> } = {}): Map<string, number> {\n const damping = opts.damping ?? 0.85;\n const iterations = opts.iterations ?? 30;\n const n = nodes.length;\n if (n === 0) return new Map();\n\n const index = new Map(nodes.map((node, i) => [node, i]));\n const out: number[][] = nodes.map(() => []);\n for (const [src, dst] of edges) {\n const si = index.get(src);\n const di = index.get(dst);\n if (si !== undefined && di !== undefined) out[si].push(di);\n }\n\n let base: number[];\n if (opts.personal) {\n base = nodes.map(() => 0);\n let total = 0;\n for (const [node, weight] of opts.personal) {\n const i = index.get(node);\n if (i !== undefined && weight > 0) {\n base[i] = weight;\n total += weight;\n }\n }\n if (total === 0) return new Map(nodes.map((node) => [node, 0]));\n base = base.map((b) => b / total);\n } else {\n base = nodes.map(() => 1 / n);\n }\n\n let rank = [...base];\n for (let iter = 0; iter < iterations; iter++) {\n const next = base.map((b) => (1 - damping) * b);\n let dangling = 0;\n for (let i = 0; i < n; i++) {\n if (out[i].length === 0) {\n dangling += rank[i];\n continue;\n }\n const share = (damping * rank[i]) / out[i].length;\n for (const j of out[i]) next[j] += share;\n }\n for (let i = 0; i < n; i++) next[i] += damping * dangling * base[i];\n rank = next;\n }\n return new Map(nodes.map((node, i) => [node, rank[i]]));\n}\n\n// Connective expansion: walk the graph (undirected -- backlinks relate as much as links)\n// from a seed result set. Answers \"what is linked to the notes that matched\".\nexport function personalizedRank(nodes: string[], edges: Edge[], seeds: Map<string, number>): Map<string, number> {\n const undirected: Edge[] = [];\n for (const [src, dst] of edges) {\n undirected.push([src, dst], [dst, src]);\n }\n return pagerank(nodes, undirected, { damping: 0.7, iterations: 15, personal: seeds });\n}\n"],"names":["pagerank","personalizedRank","nodes","edges","opts","damping","iterations","n","length","Map","index","map","node","i","out","src","dst","si","get","di","undefined","push","base","personal","total","weight","b","rank","iter","next","dangling","share","j","seeds","undirected"],"mappings":"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"}
@@ -1,12 +1,19 @@
1
- export type { Config, ResolvedConfig } from './config.js';
2
- export { CONFIG_FILENAME, findConfigPath, initConfig, loadConfig, STATE_DIR, SUPPORTED_CONFIG_VERSION } from './config.js';
1
+ export type { Config, FeatureName, ResolvedConfig } from './config.js';
2
+ export { CONFIG_FILENAME, enabledFeatures, FEATURE_NAMES, featureEnabled, findConfigPath, initConfig, loadConfig, migrateConfig, STATE_DIR, SUPPORTED_CONFIG_VERSION } from './config.js';
3
3
  export type { OpenResult } from './db.js';
4
4
  export { DB_FILENAME, docCount, getMeta, open, rebuild, reconcile, setMeta } from './db.js';
5
5
  export type { SenseErrorCode } from './errors.js';
6
6
  export { SenseError } from './errors.js';
7
+ export { activeFeatures, FEATURES, linkEdges } from './features/index.js';
8
+ export type { Section } from './features/sections.js';
9
+ export type { Feature } from './features/types.js';
10
+ export type { Edge } from './graph.js';
11
+ export { pagerank, personalizedRank } from './graph.js';
7
12
  export type { Row } from './output.js';
8
13
  export { printRows } from './output.js';
9
14
  export type { FileStat, ParsedDoc } from './scan.js';
10
15
  export { listFiles, parseFile } from './scan.js';
16
+ export type { FindOptions, Peek, VaultMap } from './verbs.js';
17
+ export { find, peek, vaultMap } from './verbs.js';
11
18
  export type { WatchEvent, WatchOptions } from './watch.js';
12
19
  export { runWatch } from './watch.js';
@@ -1,12 +1,19 @@
1
- export type { Config, ResolvedConfig } from './config.js';
2
- export { CONFIG_FILENAME, findConfigPath, initConfig, loadConfig, STATE_DIR, SUPPORTED_CONFIG_VERSION } from './config.js';
1
+ export type { Config, FeatureName, ResolvedConfig } from './config.js';
2
+ export { CONFIG_FILENAME, enabledFeatures, FEATURE_NAMES, featureEnabled, findConfigPath, initConfig, loadConfig, migrateConfig, STATE_DIR, SUPPORTED_CONFIG_VERSION } from './config.js';
3
3
  export type { OpenResult } from './db.js';
4
4
  export { DB_FILENAME, docCount, getMeta, open, rebuild, reconcile, setMeta } from './db.js';
5
5
  export type { SenseErrorCode } from './errors.js';
6
6
  export { SenseError } from './errors.js';
7
+ export { activeFeatures, FEATURES, linkEdges } from './features/index.js';
8
+ export type { Section } from './features/sections.js';
9
+ export type { Feature } from './features/types.js';
10
+ export type { Edge } from './graph.js';
11
+ export { pagerank, personalizedRank } from './graph.js';
7
12
  export type { Row } from './output.js';
8
13
  export { printRows } from './output.js';
9
14
  export type { FileStat, ParsedDoc } from './scan.js';
10
15
  export { listFiles, parseFile } from './scan.js';
16
+ export type { FindOptions, Peek, VaultMap } from './verbs.js';
17
+ export { find, peek, vaultMap } from './verbs.js';
11
18
  export type { WatchEvent, WatchOptions } from './watch.js';
12
19
  export { runWatch } from './watch.js';
package/dist/cjs/index.js CHANGED
@@ -16,6 +16,12 @@ _export(exports, {
16
16
  get DB_FILENAME () {
17
17
  return _dbts.DB_FILENAME;
18
18
  },
19
+ get FEATURES () {
20
+ return _indexts.FEATURES;
21
+ },
22
+ get FEATURE_NAMES () {
23
+ return _configts.FEATURE_NAMES;
24
+ },
19
25
  get STATE_DIR () {
20
26
  return _configts.STATE_DIR;
21
27
  },
@@ -25,9 +31,21 @@ _export(exports, {
25
31
  get SenseError () {
26
32
  return _errorsts.SenseError;
27
33
  },
34
+ get activeFeatures () {
35
+ return _indexts.activeFeatures;
36
+ },
28
37
  get docCount () {
29
38
  return _dbts.docCount;
30
39
  },
40
+ get enabledFeatures () {
41
+ return _configts.enabledFeatures;
42
+ },
43
+ get featureEnabled () {
44
+ return _configts.featureEnabled;
45
+ },
46
+ get find () {
47
+ return _verbsts.find;
48
+ },
31
49
  get findConfigPath () {
32
50
  return _configts.findConfigPath;
33
51
  },
@@ -37,18 +55,33 @@ _export(exports, {
37
55
  get initConfig () {
38
56
  return _configts.initConfig;
39
57
  },
58
+ get linkEdges () {
59
+ return _indexts.linkEdges;
60
+ },
40
61
  get listFiles () {
41
62
  return _scants.listFiles;
42
63
  },
43
64
  get loadConfig () {
44
65
  return _configts.loadConfig;
45
66
  },
67
+ get migrateConfig () {
68
+ return _configts.migrateConfig;
69
+ },
46
70
  get open () {
47
71
  return _dbts.open;
48
72
  },
73
+ get pagerank () {
74
+ return _graphts.pagerank;
75
+ },
49
76
  get parseFile () {
50
77
  return _scants.parseFile;
51
78
  },
79
+ get peek () {
80
+ return _verbsts.peek;
81
+ },
82
+ get personalizedRank () {
83
+ return _graphts.personalizedRank;
84
+ },
52
85
  get printRows () {
53
86
  return _outputts.printRows;
54
87
  },
@@ -63,12 +96,18 @@ _export(exports, {
63
96
  },
64
97
  get setMeta () {
65
98
  return _dbts.setMeta;
99
+ },
100
+ get vaultMap () {
101
+ return _verbsts.vaultMap;
66
102
  }
67
103
  });
68
104
  var _configts = require("./config.js");
69
105
  var _dbts = require("./db.js");
70
106
  var _errorsts = require("./errors.js");
107
+ var _indexts = require("./features/index.js");
108
+ var _graphts = require("./graph.js");
71
109
  var _outputts = require("./output.js");
72
110
  var _scants = require("./scan.js");
111
+ var _verbsts = require("./verbs.js");
73
112
  var _watchts = require("./watch.js");
74
113
  /* 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/index.ts"],"sourcesContent":["// Public library API.\n\nexport type { Config, ResolvedConfig } from './config.ts';\nexport { CONFIG_FILENAME, findConfigPath, initConfig, loadConfig, STATE_DIR, SUPPORTED_CONFIG_VERSION } from './config.ts';\n\nexport type { OpenResult } from './db.ts';\nexport { DB_FILENAME, docCount, getMeta, open, rebuild, reconcile, setMeta } from './db.ts';\n\nexport type { SenseErrorCode } from './errors.ts';\nexport { SenseError } from './errors.ts';\n\nexport type { Row } from './output.ts';\nexport { printRows } from './output.ts';\n\nexport type { FileStat, ParsedDoc } from './scan.ts';\nexport { listFiles, parseFile } from './scan.ts';\n\nexport type { WatchEvent, WatchOptions } from './watch.ts';\nexport { runWatch } from './watch.ts';\n"],"names":["CONFIG_FILENAME","DB_FILENAME","STATE_DIR","SUPPORTED_CONFIG_VERSION","SenseError","docCount","findConfigPath","getMeta","initConfig","listFiles","loadConfig","open","parseFile","printRows","rebuild","reconcile","runWatch","setMeta"],"mappings":"AAAA,sBAAsB;;;;;;;;;;;;QAGbA;eAAAA,yBAAe;;QAGfC;eAAAA,iBAAW;;QAH8CC;eAAAA,mBAAS;;QAAEC;eAAAA,kCAAwB;;QAM5FC;eAAAA,oBAAU;;QAHGC;eAAAA,cAAQ;;QAHJC;eAAAA,wBAAc;;QAGRC;eAAAA,aAAO;;QAHGC;eAAAA,oBAAU;;QAY3CC;eAAAA,iBAAS;;QAZoCC;eAAAA,oBAAU;;QAGvBC;eAAAA,UAAI;;QASzBC;eAAAA,iBAAS;;QAHpBC;eAAAA,mBAAS;;QAN6BC;eAAAA,aAAO;;QAAEC;eAAAA,eAAS;;QAYxDC;eAAAA,iBAAQ;;QAZkDC;eAAAA,aAAO;;;wBAHmC;oBAG3B;wBAGvD;wBAGD;sBAGW;uBAGZ"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/index.ts"],"sourcesContent":["// Public library API.\n\nexport type { Config, FeatureName, ResolvedConfig } from './config.ts';\nexport { CONFIG_FILENAME, enabledFeatures, FEATURE_NAMES, featureEnabled, findConfigPath, initConfig, loadConfig, migrateConfig, STATE_DIR, SUPPORTED_CONFIG_VERSION } from './config.ts';\n\nexport type { OpenResult } from './db.ts';\nexport { DB_FILENAME, docCount, getMeta, open, rebuild, reconcile, setMeta } from './db.ts';\nexport type { SenseErrorCode } from './errors.ts';\nexport { SenseError } from './errors.ts';\nexport { activeFeatures, FEATURES, linkEdges } from './features/index.ts';\nexport type { Section } from './features/sections.ts';\nexport type { Feature } from './features/types.ts';\n\nexport type { Edge } from './graph.ts';\nexport { pagerank, personalizedRank } from './graph.ts';\n\nexport type { Row } from './output.ts';\nexport { printRows } from './output.ts';\n\nexport type { FileStat, ParsedDoc } from './scan.ts';\nexport { listFiles, parseFile } from './scan.ts';\n\nexport type { FindOptions, Peek, VaultMap } from './verbs.ts';\nexport { find, peek, vaultMap } from './verbs.ts';\n\nexport type { WatchEvent, WatchOptions } from './watch.ts';\nexport { runWatch } from './watch.ts';\n"],"names":["CONFIG_FILENAME","DB_FILENAME","FEATURES","FEATURE_NAMES","STATE_DIR","SUPPORTED_CONFIG_VERSION","SenseError","activeFeatures","docCount","enabledFeatures","featureEnabled","find","findConfigPath","getMeta","initConfig","linkEdges","listFiles","loadConfig","migrateConfig","open","pagerank","parseFile","peek","personalizedRank","printRows","rebuild","reconcile","runWatch","setMeta","vaultMap"],"mappings":"AAAA,sBAAsB;;;;;;;;;;;;QAGbA;eAAAA,yBAAe;;QAGfC;eAAAA,iBAAW;;QAGKC;eAAAA,iBAAQ;;QANUC;eAAAA,uBAAa;;QAAyEC;eAAAA,mBAAS;;QAAEC;eAAAA,kCAAwB;;QAK3JC;eAAAA,oBAAU;;QACVC;eAAAA,uBAAc;;QAHDC;eAAAA,cAAQ;;QAHJC;eAAAA,yBAAe;;QAAiBC;eAAAA,wBAAc;;QAoB/DC;eAAAA,aAAI;;QApB6DC;eAAAA,wBAAc;;QAGxDC;eAAAA,aAAO;;QAHmDC;eAAAA,oBAAU;;QAMjEC;eAAAA,kBAAS;;QAWnCC;eAAAA,iBAAS;;QAjBoFC;eAAAA,oBAAU;;QAAEC;eAAAA,uBAAa;;QAGtFC;eAAAA,UAAI;;QAQpCC;eAAAA,iBAAQ;;QAMGC;eAAAA,iBAAS;;QAGdC;eAAAA,aAAI;;QATAC;eAAAA,yBAAgB;;QAG1BC;eAAAA,mBAAS;;QAX6BC;eAAAA,aAAO;;QAAEC;eAAAA,eAAS;;QAoBxDC;eAAAA,iBAAQ;;QApBkDC;eAAAA,aAAO;;QAiBrDC;eAAAA,iBAAQ;;;wBApB+I;oBAG1F;wBAEvD;uBACyB;uBAKT;wBAGjB;sBAGW;uBAGA;uBAGZ"}
@@ -1,2 +1,23 @@
1
1
  export type Row = Record<string, unknown>;
2
2
  export declare function printRows(rows: Row[], format: 'table' | 'json'): void;
3
+ export declare function renderMap(result: {
4
+ docs: {
5
+ count: number;
6
+ bytes: number;
7
+ };
8
+ fields: Row[];
9
+ hubs: Row[];
10
+ recent: Row[];
11
+ }): string;
12
+ export declare function renderPeek(result: {
13
+ path: string;
14
+ tokens: number;
15
+ frontmatter: Row;
16
+ sections: Row[];
17
+ outbound: string[];
18
+ backlinks: string[];
19
+ unresolved: string[];
20
+ outboundTotal: number;
21
+ backlinksTotal: number;
22
+ unresolvedTotal: number;
23
+ }): string;
@@ -1,2 +1,23 @@
1
1
  export type Row = Record<string, unknown>;
2
2
  export declare function printRows(rows: Row[], format: 'table' | 'json'): void;
3
+ export declare function renderMap(result: {
4
+ docs: {
5
+ count: number;
6
+ bytes: number;
7
+ };
8
+ fields: Row[];
9
+ hubs: Row[];
10
+ recent: Row[];
11
+ }): string;
12
+ export declare function renderPeek(result: {
13
+ path: string;
14
+ tokens: number;
15
+ frontmatter: Row;
16
+ sections: Row[];
17
+ outbound: string[];
18
+ backlinks: string[];
19
+ unresolved: string[];
20
+ outboundTotal: number;
21
+ backlinksTotal: number;
22
+ unresolvedTotal: number;
23
+ }): string;
@@ -3,10 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "printRows", {
7
- enumerable: true,
8
- get: function() {
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: Object.getOwnPropertyDescriptor(all, name).get
10
+ });
11
+ }
12
+ _export(exports, {
13
+ get printRows () {
9
14
  return printRows;
15
+ },
16
+ get renderMap () {
17
+ return renderMap;
18
+ },
19
+ get renderPeek () {
20
+ return renderPeek;
10
21
  }
11
22
  });
12
23
  function _array_like_to_array(arr, len) {
@@ -14,15 +25,48 @@ function _array_like_to_array(arr, len) {
14
25
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
15
26
  return arr2;
16
27
  }
28
+ function _array_with_holes(arr) {
29
+ if (Array.isArray(arr)) return arr;
30
+ }
17
31
  function _array_without_holes(arr) {
18
32
  if (Array.isArray(arr)) return _array_like_to_array(arr);
19
33
  }
20
34
  function _iterable_to_array(iter) {
21
35
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
22
36
  }
37
+ function _iterable_to_array_limit(arr, i) {
38
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
39
+ if (_i == null) return;
40
+ var _arr = [];
41
+ var _n = true;
42
+ var _d = false;
43
+ var _s, _e;
44
+ try {
45
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
46
+ _arr.push(_s.value);
47
+ if (i && _arr.length === i) break;
48
+ }
49
+ } catch (err) {
50
+ _d = true;
51
+ _e = err;
52
+ } finally{
53
+ try {
54
+ if (!_n && _i["return"] != null) _i["return"]();
55
+ } finally{
56
+ if (_d) throw _e;
57
+ }
58
+ }
59
+ return _arr;
60
+ }
61
+ function _non_iterable_rest() {
62
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
63
+ }
23
64
  function _non_iterable_spread() {
24
65
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
25
66
  }
67
+ function _sliced_to_array(arr, i) {
68
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
69
+ }
26
70
  function _to_consumable_array(arr) {
27
71
  return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
28
72
  }
@@ -76,4 +120,69 @@ function render(rows, format) {
76
120
  }).join(' ')
77
121
  ].concat(_to_consumable_array(cells.map(formatRow))).join('\n');
78
122
  }
123
+ function renderMap(result) {
124
+ var parts = [
125
+ "docs: ".concat(result.docs.count, " (").concat(Math.round(result.docs.bytes / 1024), " KB)\n"),
126
+ render(result.fields, 'table')
127
+ ];
128
+ if (result.hubs.length > 0) parts.push('\nhubs (by link rank):', render(result.hubs, 'table'));
129
+ parts.push('\nrecent:', render(result.recent, 'table'));
130
+ return parts.join('\n');
131
+ }
132
+ function renderPeek(result) {
133
+ var lines = [
134
+ "".concat(result.path, " (~").concat(result.tokens, " tokens)")
135
+ ];
136
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
137
+ try {
138
+ for(var _iterator = Object.entries(result.frontmatter)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
139
+ var _step_value = _sliced_to_array(_step.value, 2), key = _step_value[0], value = _step_value[1];
140
+ lines.push(" ".concat(key, ": ").concat(value));
141
+ }
142
+ } catch (err) {
143
+ _didIteratorError = true;
144
+ _iteratorError = err;
145
+ } finally{
146
+ try {
147
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
148
+ _iterator.return();
149
+ }
150
+ } finally{
151
+ if (_didIteratorError) {
152
+ throw _iteratorError;
153
+ }
154
+ }
155
+ }
156
+ if (result.sections.length > 0) {
157
+ lines.push('', 'sections:');
158
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
159
+ try {
160
+ for(var _iterator1 = result.sections[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
161
+ var s = _step1.value;
162
+ lines.push(" ".concat('#'.repeat(s.level), " ").concat(s.heading, " [L").concat(s.start_line, "-").concat(s.end_line, ", ~").concat(s.tokens, "t]"));
163
+ }
164
+ } catch (err) {
165
+ _didIteratorError1 = true;
166
+ _iteratorError1 = err;
167
+ } finally{
168
+ try {
169
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
170
+ _iterator1.return();
171
+ }
172
+ } finally{
173
+ if (_didIteratorError1) {
174
+ throw _iteratorError1;
175
+ }
176
+ }
177
+ }
178
+ }
179
+ var linkLine = function linkLine(label, shown, total) {
180
+ if (total > 0) lines.push("".concat(label, " (").concat(total, "): ").concat(shown.join(', ')).concat(total > shown.length ? ", +".concat(total - shown.length, " more") : ''));
181
+ };
182
+ if (result.outboundTotal + result.unresolvedTotal + result.backlinksTotal > 0) lines.push('');
183
+ linkLine('links out', result.outbound, result.outboundTotal);
184
+ linkLine('unresolved', result.unresolved, result.unresolvedTotal);
185
+ linkLine('backlinks', result.backlinks, result.backlinksTotal);
186
+ return lines.join('\n');
187
+ }
79
188
  /* 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/output.ts"],"sourcesContent":["// rows -> table (default) | json\n\nexport type Row = Record<string, unknown>;\n\n// Warned about on stderr (keeps --format json stdout machine-readable), never truncated.\nconst OVERSIZE_BYTES = 50_000;\n\n// Flatten embedded newlines so they can't break table column alignment; JSON output is left alone.\nfunction cell(value: unknown): string {\n return String(value ?? '').replace(/\\s*\\n\\s*/g, ' ');\n}\n\nexport function printRows(rows: Row[], format: 'table' | 'json'): void {\n const rendered = render(rows, format);\n console.log(rendered);\n if (rendered.length > OVERSIZE_BYTES) {\n console.warn(`warning: result is ${Math.round(rendered.length / 1000)} KB across ${rows.length} row(s); consider a LIMIT, fewer columns, or snippet() instead of whole values`);\n }\n}\n\nfunction render(rows: Row[], format: 'table' | 'json'): string {\n if (format === 'json') return JSON.stringify(rows, null, 2);\n if (rows.length === 0) return '(0 rows)';\n\n const columns = Object.keys(rows[0]);\n const cells = rows.map((row) => columns.map((col) => cell(row[col])));\n const widths = columns.map((col, i) => Math.max(col.length, ...cells.map((row) => row[i].length)));\n\n const formatRow = (values: string[]) => values.map((value, i) => value.padEnd(widths[i])).join(' ');\n\n return [formatRow(columns), widths.map((w) => '-'.repeat(w)).join(' '), ...cells.map(formatRow)].join('\\n');\n}\n"],"names":["printRows","OVERSIZE_BYTES","cell","value","String","replace","rows","format","rendered","render","console","log","length","warn","Math","round","JSON","stringify","columns","Object","keys","cells","map","row","col","widths","i","max","formatRow","values","padEnd","join","w","repeat"],"mappings":"AAAA,iCAAiC;;;;;+BAYjBA;;;eAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AARhB,yFAAyF;AACzF,IAAMC,iBAAiB;AAEvB,mGAAmG;AACnG,SAASC,KAAKC,KAAc;IAC1B,OAAOC,OAAOD,kBAAAA,mBAAAA,QAAS,IAAIE,OAAO,CAAC,aAAa;AAClD;AAEO,SAASL,UAAUM,IAAW,EAAEC,MAAwB;IAC7D,IAAMC,WAAWC,OAAOH,MAAMC;IAC9BG,QAAQC,GAAG,CAACH;IACZ,IAAIA,SAASI,MAAM,GAAGX,gBAAgB;QACpCS,QAAQG,IAAI,CAAC,AAAC,sBAAqEP,OAAhDQ,KAAKC,KAAK,CAACP,SAASI,MAAM,GAAG,OAAM,eAAyB,OAAZN,KAAKM,MAAM,EAAC;IACjG;AACF;AAEA,SAASH,OAAOH,IAAW,EAAEC,MAAwB;QAMZO;IALvC,IAAIP,WAAW,QAAQ,OAAOS,KAAKC,SAAS,CAACX,MAAM,MAAM;IACzD,IAAIA,KAAKM,MAAM,KAAK,GAAG,OAAO;IAE9B,IAAMM,UAAUC,OAAOC,IAAI,CAACd,IAAI,CAAC,EAAE;IACnC,IAAMe,QAAQf,KAAKgB,GAAG,CAAC,SAACC;eAAQL,QAAQI,GAAG,CAAC,SAACE;mBAAQtB,KAAKqB,GAAG,CAACC,IAAI;;;IAClE,IAAMC,SAASP,QAAQI,GAAG,CAAC,SAACE,KAAKE;eAAMZ,CAAAA,QAAAA,MAAKa,GAAG,OAARb,OAAAA;YAASU,IAAIZ,MAAM;SAAuC,CAA1DE,OAAqB,qBAAGO,MAAMC,GAAG,CAAC,SAACC;mBAAQA,GAAG,CAACG,EAAE,CAACd,MAAM;;;IAE/F,IAAMgB,YAAY,mBAACC;eAAqBA,OAAOP,GAAG,CAAC,SAACnB,OAAOuB;mBAAMvB,MAAM2B,MAAM,CAACL,MAAM,CAACC,EAAE;WAAGK,IAAI,CAAC;;IAE/F,OAAO;QAACH,UAAUV;QAAUO,OAAOH,GAAG,CAAC,SAACU;mBAAM,IAAIC,MAAM,CAACD;WAAID,IAAI,CAAC;KAA+B,CAA1F,OAAkE,qBAAGV,MAAMC,GAAG,CAACM,aAAYG,IAAI,CAAC;AACzG"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/output.ts"],"sourcesContent":["// rows -> table (default) | json\n\nexport type Row = Record<string, unknown>;\n\n// Warned about on stderr (keeps --format json stdout machine-readable), never truncated.\nconst OVERSIZE_BYTES = 50_000;\n\n// Flatten embedded newlines so they can't break table column alignment; JSON output is left alone.\nfunction cell(value: unknown): string {\n return String(value ?? '').replace(/\\s*\\n\\s*/g, ' ');\n}\n\nexport function printRows(rows: Row[], format: 'table' | 'json'): void {\n const rendered = render(rows, format);\n console.log(rendered);\n if (rendered.length > OVERSIZE_BYTES) {\n console.warn(`warning: result is ${Math.round(rendered.length / 1000)} KB across ${rows.length} row(s); consider a LIMIT, fewer columns, or snippet() instead of whole values`);\n }\n}\n\nfunction render(rows: Row[], format: 'table' | 'json'): string {\n if (format === 'json') return JSON.stringify(rows, null, 2);\n if (rows.length === 0) return '(0 rows)';\n\n const columns = Object.keys(rows[0]);\n const cells = rows.map((row) => columns.map((col) => cell(row[col])));\n const widths = columns.map((col, i) => Math.max(col.length, ...cells.map((row) => row[i].length)));\n\n const formatRow = (values: string[]) => values.map((value, i) => value.padEnd(widths[i])).join(' ');\n\n return [formatRow(columns), widths.map((w) => '-'.repeat(w)).join(' '), ...cells.map(formatRow)].join('\\n');\n}\n\n// Text renderers for the layer verbs; cli.ts prints what these return.\n\nexport function renderMap(result: { docs: { count: number; bytes: number }; fields: Row[]; hubs: Row[]; recent: Row[] }): string {\n const parts = [`docs: ${result.docs.count} (${Math.round(result.docs.bytes / 1024)} KB)\\n`, render(result.fields, 'table')];\n if (result.hubs.length > 0) parts.push('\\nhubs (by link rank):', render(result.hubs, 'table'));\n parts.push('\\nrecent:', render(result.recent, 'table'));\n return parts.join('\\n');\n}\n\nexport function renderPeek(result: { path: string; tokens: number; frontmatter: Row; sections: Row[]; outbound: string[]; backlinks: string[]; unresolved: string[]; outboundTotal: number; backlinksTotal: number; unresolvedTotal: number }): string {\n const lines = [`${result.path} (~${result.tokens} tokens)`];\n for (const [key, value] of Object.entries(result.frontmatter)) lines.push(` ${key}: ${value}`);\n if (result.sections.length > 0) {\n lines.push('', 'sections:');\n for (const s of result.sections) lines.push(` ${'#'.repeat(s.level as number)} ${s.heading} [L${s.start_line}-${s.end_line}, ~${s.tokens}t]`);\n }\n const linkLine = (label: string, shown: string[], total: number) => {\n if (total > 0) lines.push(`${label} (${total}): ${shown.join(', ')}${total > shown.length ? `, +${total - shown.length} more` : ''}`);\n };\n if (result.outboundTotal + result.unresolvedTotal + result.backlinksTotal > 0) lines.push('');\n linkLine('links out', result.outbound, result.outboundTotal);\n linkLine('unresolved', result.unresolved, result.unresolvedTotal);\n linkLine('backlinks', result.backlinks, result.backlinksTotal);\n return lines.join('\\n');\n}\n"],"names":["printRows","renderMap","renderPeek","OVERSIZE_BYTES","cell","value","String","replace","rows","format","rendered","render","console","log","length","warn","Math","round","JSON","stringify","columns","Object","keys","cells","map","row","col","widths","i","max","formatRow","values","padEnd","join","w","repeat","result","parts","docs","count","bytes","fields","hubs","push","recent","lines","path","tokens","entries","frontmatter","key","sections","s","level","heading","start_line","end_line","linkLine","label","shown","total","outboundTotal","unresolvedTotal","backlinksTotal","outbound","unresolved","backlinks"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Config } from './config.js';
2
+ import type { Feature } from './features/types.js';
2
3
  export interface FileStat {
3
4
  relPath: string;
4
5
  absPath: string;
@@ -16,8 +17,9 @@ export interface ParsedDoc {
16
17
  summary: string;
17
18
  text: string;
18
19
  };
20
+ extracted: Record<string, unknown>;
19
21
  }
20
- export declare function parseFile(file: FileStat): {
22
+ export declare function parseFile(file: FileStat, extractors?: Feature[]): {
21
23
  doc: ParsedDoc;
22
24
  warnings: string[];
23
25
  };