sensemaking 0.7.1 → 0.8.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 (201) hide show
  1. package/README.md +61 -41
  2. package/dist/cjs/cli/check.js +386 -0
  3. package/dist/cjs/cli/check.js.map +1 -0
  4. package/dist/cjs/{commands → cli}/find.js +3 -4
  5. package/dist/cjs/cli/find.js.map +1 -0
  6. package/dist/cjs/cli/index.js.map +1 -0
  7. package/dist/cjs/{commands → cli}/init.js +3 -0
  8. package/dist/cjs/cli/init.js.map +1 -0
  9. package/dist/cjs/{commands → cli}/map.js +2 -2
  10. package/dist/cjs/cli/map.js.map +1 -0
  11. package/dist/cjs/{commands → cli}/named.d.cts +1 -1
  12. package/dist/cjs/{commands → cli}/named.d.ts +1 -1
  13. package/dist/cjs/cli/named.js +209 -0
  14. package/dist/cjs/cli/named.js.map +1 -0
  15. package/dist/cjs/{commands → cli}/peek.js +2 -2
  16. package/dist/cjs/cli/peek.js.map +1 -0
  17. package/dist/cjs/cli/query.js.map +1 -0
  18. package/dist/cjs/cli/rebuild.js.map +1 -0
  19. package/dist/cjs/{commands → cli}/shared.d.cts +1 -0
  20. package/dist/{esm/commands → cjs/cli}/shared.d.ts +1 -0
  21. package/dist/cjs/{commands → cli}/shared.js +9 -0
  22. package/dist/cjs/cli/shared.js.map +1 -0
  23. package/dist/cjs/{commands → cli}/status.js +7 -1
  24. package/dist/cjs/cli/status.js.map +1 -0
  25. package/dist/cjs/cli/watch.js.map +1 -0
  26. package/dist/cjs/cli.js +23 -18
  27. package/dist/cjs/cli.js.map +1 -1
  28. package/dist/{esm/verbs.d.ts → cjs/commands.d.cts} +5 -4
  29. package/dist/cjs/{verbs.d.cts → commands.d.ts} +5 -4
  30. package/dist/cjs/{verbs.js → commands.js} +246 -21
  31. package/dist/cjs/commands.js.map +1 -0
  32. package/dist/cjs/config.d.cts +7 -1
  33. package/dist/cjs/config.d.ts +7 -1
  34. package/dist/cjs/config.js +75 -24
  35. package/dist/cjs/config.js.map +1 -1
  36. package/dist/cjs/db.d.cts +1 -1
  37. package/dist/cjs/db.d.ts +1 -1
  38. package/dist/cjs/db.js +88 -17
  39. package/dist/cjs/db.js.map +1 -1
  40. package/dist/cjs/errors.d.cts +1 -1
  41. package/dist/cjs/errors.d.ts +1 -1
  42. package/dist/cjs/errors.js.map +1 -1
  43. package/dist/cjs/features/embed.js +7 -1
  44. package/dist/cjs/features/embed.js.map +1 -1
  45. package/dist/cjs/features/links.js +201 -24
  46. package/dist/cjs/features/links.js.map +1 -1
  47. package/dist/cjs/features/rank.js +8 -1
  48. package/dist/cjs/features/rank.js.map +1 -1
  49. package/dist/cjs/features/types.d.cts +10 -3
  50. package/dist/cjs/features/types.d.ts +10 -3
  51. package/dist/cjs/index.d.cts +3 -3
  52. package/dist/cjs/index.d.ts +3 -3
  53. package/dist/cjs/index.js +4 -4
  54. package/dist/cjs/index.js.map +1 -1
  55. package/dist/cjs/output.d.cts +1 -0
  56. package/dist/cjs/output.d.ts +1 -0
  57. package/dist/cjs/output.js +2 -1
  58. package/dist/cjs/output.js.map +1 -1
  59. package/dist/cjs/progress.d.cts +5 -0
  60. package/dist/cjs/progress.d.ts +5 -0
  61. package/dist/cjs/progress.js +54 -0
  62. package/dist/cjs/progress.js.map +1 -0
  63. package/dist/cjs/scan.d.cts +1 -0
  64. package/dist/cjs/scan.d.ts +1 -0
  65. package/dist/cjs/scan.js +3 -2
  66. package/dist/cjs/scan.js.map +1 -1
  67. package/dist/esm/{commands → cli}/check.js +43 -3
  68. package/dist/esm/cli/check.js.map +1 -0
  69. package/dist/esm/{commands → cli}/find.js +3 -4
  70. package/dist/esm/cli/find.js.map +1 -0
  71. package/dist/esm/cli/index.js.map +1 -0
  72. package/dist/esm/{commands → cli}/init.js +3 -0
  73. package/dist/esm/cli/init.js.map +1 -0
  74. package/dist/esm/{commands → cli}/map.js +1 -1
  75. package/dist/esm/cli/map.js.map +1 -0
  76. package/dist/esm/{commands → cli}/named.d.ts +1 -1
  77. package/dist/esm/cli/named.js +33 -0
  78. package/dist/esm/cli/named.js.map +1 -0
  79. package/dist/esm/{commands → cli}/peek.js +1 -1
  80. package/dist/esm/cli/peek.js.map +1 -0
  81. package/dist/esm/cli/query.js.map +1 -0
  82. package/dist/esm/cli/rebuild.js.map +1 -0
  83. package/dist/{cjs/commands → esm/cli}/shared.d.ts +1 -0
  84. package/dist/esm/{commands → cli}/shared.js +9 -0
  85. package/dist/esm/cli/shared.js.map +1 -0
  86. package/dist/esm/{commands → cli}/status.js +7 -1
  87. package/dist/esm/cli/status.js.map +1 -0
  88. package/dist/esm/cli/types.js.map +1 -0
  89. package/dist/esm/cli/watch.js.map +1 -0
  90. package/dist/esm/cli.js +9 -7
  91. package/dist/esm/cli.js.map +1 -1
  92. package/dist/{cjs/verbs.d.ts → esm/commands.d.ts} +5 -4
  93. package/dist/esm/{verbs.js → commands.js} +165 -21
  94. package/dist/esm/commands.js.map +1 -0
  95. package/dist/esm/config.d.ts +7 -1
  96. package/dist/esm/config.js +38 -4
  97. package/dist/esm/config.js.map +1 -1
  98. package/dist/esm/db.d.ts +1 -1
  99. package/dist/esm/db.js +78 -16
  100. package/dist/esm/db.js.map +1 -1
  101. package/dist/esm/errors.d.ts +1 -1
  102. package/dist/esm/errors.js.map +1 -1
  103. package/dist/esm/features/embed.js +6 -0
  104. package/dist/esm/features/embed.js.map +1 -1
  105. package/dist/esm/features/links.js +130 -20
  106. package/dist/esm/features/links.js.map +1 -1
  107. package/dist/esm/features/rank.js +8 -1
  108. package/dist/esm/features/rank.js.map +1 -1
  109. package/dist/esm/features/types.d.ts +10 -3
  110. package/dist/esm/features/types.js.map +1 -1
  111. package/dist/esm/index.d.ts +3 -3
  112. package/dist/esm/index.js +1 -1
  113. package/dist/esm/index.js.map +1 -1
  114. package/dist/esm/output.d.ts +1 -0
  115. package/dist/esm/output.js +2 -1
  116. package/dist/esm/output.js.map +1 -1
  117. package/dist/esm/progress.d.ts +5 -0
  118. package/dist/esm/progress.js +44 -0
  119. package/dist/esm/progress.js.map +1 -0
  120. package/dist/esm/scan.d.ts +1 -0
  121. package/dist/esm/scan.js +5 -2
  122. package/dist/esm/scan.js.map +1 -1
  123. package/package.json +6 -2
  124. package/schema.json +19 -4
  125. package/skills/sense/EXAMPLES.md +9 -7
  126. package/skills/sense/SKILL.md +43 -27
  127. package/skills/sense-setup/SKILL.md +16 -2
  128. package/dist/cjs/commands/check.js +0 -143
  129. package/dist/cjs/commands/check.js.map +0 -1
  130. package/dist/cjs/commands/find.js.map +0 -1
  131. package/dist/cjs/commands/index.js.map +0 -1
  132. package/dist/cjs/commands/init.js.map +0 -1
  133. package/dist/cjs/commands/map.js.map +0 -1
  134. package/dist/cjs/commands/named.js +0 -23
  135. package/dist/cjs/commands/named.js.map +0 -1
  136. package/dist/cjs/commands/peek.js.map +0 -1
  137. package/dist/cjs/commands/query.js.map +0 -1
  138. package/dist/cjs/commands/rebuild.js.map +0 -1
  139. package/dist/cjs/commands/shared.js.map +0 -1
  140. package/dist/cjs/commands/status.js.map +0 -1
  141. package/dist/cjs/commands/watch.js.map +0 -1
  142. package/dist/cjs/verbs.js.map +0 -1
  143. package/dist/esm/commands/check.js.map +0 -1
  144. package/dist/esm/commands/find.js.map +0 -1
  145. package/dist/esm/commands/index.js.map +0 -1
  146. package/dist/esm/commands/init.js.map +0 -1
  147. package/dist/esm/commands/map.js.map +0 -1
  148. package/dist/esm/commands/named.js +0 -12
  149. package/dist/esm/commands/named.js.map +0 -1
  150. package/dist/esm/commands/peek.js.map +0 -1
  151. package/dist/esm/commands/query.js.map +0 -1
  152. package/dist/esm/commands/rebuild.js.map +0 -1
  153. package/dist/esm/commands/shared.js.map +0 -1
  154. package/dist/esm/commands/status.js.map +0 -1
  155. package/dist/esm/commands/types.js.map +0 -1
  156. package/dist/esm/commands/watch.js.map +0 -1
  157. package/dist/esm/verbs.js.map +0 -1
  158. /package/dist/cjs/{commands → cli}/check.d.cts +0 -0
  159. /package/dist/cjs/{commands → cli}/check.d.ts +0 -0
  160. /package/dist/cjs/{commands → cli}/find.d.cts +0 -0
  161. /package/dist/cjs/{commands → cli}/find.d.ts +0 -0
  162. /package/dist/cjs/{commands → cli}/index.d.cts +0 -0
  163. /package/dist/cjs/{commands → cli}/index.d.ts +0 -0
  164. /package/dist/cjs/{commands → cli}/index.js +0 -0
  165. /package/dist/cjs/{commands → cli}/init.d.cts +0 -0
  166. /package/dist/cjs/{commands → cli}/init.d.ts +0 -0
  167. /package/dist/cjs/{commands → cli}/map.d.cts +0 -0
  168. /package/dist/cjs/{commands → cli}/map.d.ts +0 -0
  169. /package/dist/cjs/{commands → cli}/peek.d.cts +0 -0
  170. /package/dist/cjs/{commands → cli}/peek.d.ts +0 -0
  171. /package/dist/cjs/{commands → cli}/query.d.cts +0 -0
  172. /package/dist/cjs/{commands → cli}/query.d.ts +0 -0
  173. /package/dist/cjs/{commands → cli}/query.js +0 -0
  174. /package/dist/cjs/{commands → cli}/rebuild.d.cts +0 -0
  175. /package/dist/cjs/{commands → cli}/rebuild.d.ts +0 -0
  176. /package/dist/cjs/{commands → cli}/rebuild.js +0 -0
  177. /package/dist/cjs/{commands → cli}/status.d.cts +0 -0
  178. /package/dist/cjs/{commands → cli}/status.d.ts +0 -0
  179. /package/dist/cjs/{commands → cli}/types.d.cts +0 -0
  180. /package/dist/cjs/{commands → cli}/types.d.ts +0 -0
  181. /package/dist/cjs/{commands → cli}/types.js +0 -0
  182. /package/dist/cjs/{commands → cli}/types.js.map +0 -0
  183. /package/dist/cjs/{commands → cli}/watch.d.cts +0 -0
  184. /package/dist/cjs/{commands → cli}/watch.d.ts +0 -0
  185. /package/dist/cjs/{commands → cli}/watch.js +0 -0
  186. /package/dist/esm/{commands → cli}/check.d.ts +0 -0
  187. /package/dist/esm/{commands → cli}/find.d.ts +0 -0
  188. /package/dist/esm/{commands → cli}/index.d.ts +0 -0
  189. /package/dist/esm/{commands → cli}/index.js +0 -0
  190. /package/dist/esm/{commands → cli}/init.d.ts +0 -0
  191. /package/dist/esm/{commands → cli}/map.d.ts +0 -0
  192. /package/dist/esm/{commands → cli}/peek.d.ts +0 -0
  193. /package/dist/esm/{commands → cli}/query.d.ts +0 -0
  194. /package/dist/esm/{commands → cli}/query.js +0 -0
  195. /package/dist/esm/{commands → cli}/rebuild.d.ts +0 -0
  196. /package/dist/esm/{commands → cli}/rebuild.js +0 -0
  197. /package/dist/esm/{commands → cli}/status.d.ts +0 -0
  198. /package/dist/esm/{commands → cli}/types.d.ts +0 -0
  199. /package/dist/esm/{commands → cli}/types.js +0 -0
  200. /package/dist/esm/{commands → cli}/watch.d.ts +0 -0
  201. /package/dist/esm/{commands → cli}/watch.js +0 -0
@@ -1,2 +1,2 @@
1
1
  import type { Ctx } from './types.js';
2
- export default function named(ctx: Ctx, queryName: string, params: string[]): void;
2
+ export default function named(ctx: Ctx, queryName: string, params: string[]): Promise<void>;
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, // Fallback when the first positional is not a command: a named query from config, either a
6
+ // SQL string (run as-is) or a saved find (run through the `find` command's own machinery).
7
+ "default", {
8
+ enumerable: true,
9
+ get: function() {
10
+ return named;
11
+ }
12
+ });
13
+ var _commandsts = require("../commands.js");
14
+ var _outputts = require("../output.js");
15
+ var _sharedts = require("./shared.js");
16
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
17
+ try {
18
+ var info = gen[key](arg);
19
+ var value = info.value;
20
+ } catch (error) {
21
+ reject(error);
22
+ return;
23
+ }
24
+ if (info.done) {
25
+ resolve(value);
26
+ } else {
27
+ Promise.resolve(value).then(_next, _throw);
28
+ }
29
+ }
30
+ function _async_to_generator(fn) {
31
+ return function() {
32
+ var self = this, args = arguments;
33
+ return new Promise(function(resolve, reject) {
34
+ var gen = fn.apply(self, args);
35
+ function _next(value) {
36
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
37
+ }
38
+ function _throw(err) {
39
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
40
+ }
41
+ _next(undefined);
42
+ });
43
+ };
44
+ }
45
+ function _ts_generator(thisArg, body) {
46
+ var f, y, t, _ = {
47
+ label: 0,
48
+ sent: function() {
49
+ if (t[0] & 1) throw t[1];
50
+ return t[1];
51
+ },
52
+ trys: [],
53
+ ops: []
54
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
55
+ return d(g, "next", {
56
+ value: verb(0)
57
+ }), d(g, "throw", {
58
+ value: verb(1)
59
+ }), d(g, "return", {
60
+ value: verb(2)
61
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
62
+ value: function() {
63
+ return this;
64
+ }
65
+ }), g;
66
+ function verb(n) {
67
+ return function(v) {
68
+ return step([
69
+ n,
70
+ v
71
+ ]);
72
+ };
73
+ }
74
+ function step(op) {
75
+ if (f) throw new TypeError("Generator is already executing.");
76
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
77
+ 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;
78
+ if (y = 0, t) op = [
79
+ op[0] & 2,
80
+ t.value
81
+ ];
82
+ switch(op[0]){
83
+ case 0:
84
+ case 1:
85
+ t = op;
86
+ break;
87
+ case 4:
88
+ _.label++;
89
+ return {
90
+ value: op[1],
91
+ done: false
92
+ };
93
+ case 5:
94
+ _.label++;
95
+ y = op[1];
96
+ op = [
97
+ 0
98
+ ];
99
+ continue;
100
+ case 7:
101
+ op = _.ops.pop();
102
+ _.trys.pop();
103
+ continue;
104
+ default:
105
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
106
+ _ = 0;
107
+ continue;
108
+ }
109
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
110
+ _.label = op[1];
111
+ break;
112
+ }
113
+ if (op[0] === 6 && _.label < t[1]) {
114
+ _.label = t[1];
115
+ t = op;
116
+ break;
117
+ }
118
+ if (t && _.label < t[2]) {
119
+ _.label = t[2];
120
+ _.ops.push(op);
121
+ break;
122
+ }
123
+ if (t[2]) _.ops.pop();
124
+ _.trys.pop();
125
+ continue;
126
+ }
127
+ op = body.call(thisArg, _);
128
+ } catch (e) {
129
+ op = [
130
+ 6,
131
+ e
132
+ ];
133
+ y = 0;
134
+ } finally{
135
+ f = t = 0;
136
+ }
137
+ if (op[0] & 5) throw op[1];
138
+ return {
139
+ value: op[0] ? op[1] : void 0,
140
+ done: true
141
+ };
142
+ }
143
+ }
144
+ function named(ctx, queryName, params) {
145
+ return _async_to_generator(function() {
146
+ var _parseK, _ctx_values_where, cfg, entry, k, where, semantic;
147
+ return _ts_generator(this, function(_state) {
148
+ switch(_state.label){
149
+ case 0:
150
+ cfg = ctx.resolveConfig();
151
+ entry = cfg.queries[queryName];
152
+ if (entry === undefined) {
153
+ console.error('unknown query: "'.concat(queryName, '"'));
154
+ console.error("valid queries: ".concat(Object.keys(cfg.queries).sort().join(', ')));
155
+ process.exit(2);
156
+ }
157
+ if (typeof entry === 'string') {
158
+ (0, _sharedts.runSql)(cfg, entry, params, ctx.format, 'query "'.concat(queryName, '"'));
159
+ return [
160
+ 2
161
+ ];
162
+ }
163
+ // A saved find's terms are fixed in config; there is nowhere for a positional to bind.
164
+ if (params.length > 0) {
165
+ ctx.usageError('"'.concat(queryName, '" is a saved find and takes no positional parameters; edit its "find" in sense.config.json, or use "').concat(ctx.name, ' find" directly'));
166
+ }
167
+ k = (_parseK = (0, _sharedts.parseK)(ctx)) !== null && _parseK !== void 0 ? _parseK : entry.k;
168
+ where = (_ctx_values_where = ctx.values.where) !== null && _ctx_values_where !== void 0 ? _ctx_values_where : entry.where;
169
+ // --semantic upgrades a saved find the same way --where/--k override; absent means the
170
+ // saved value (the flag has no default, so absent is distinguishable from false).
171
+ semantic = ctx.values.semantic === true || entry.semantic;
172
+ return [
173
+ 4,
174
+ (0, _sharedts.withDb)(ctx, function(db, resolvedCfg) {
175
+ return _async_to_generator(function() {
176
+ return _ts_generator(this, function(_state) {
177
+ switch(_state.label){
178
+ case 0:
179
+ return [
180
+ 4,
181
+ (0, _commandsts.find)(db, resolvedCfg, entry.find, {
182
+ k: k,
183
+ where: where,
184
+ semantic: semantic
185
+ })
186
+ ];
187
+ case 1:
188
+ return [
189
+ 2,
190
+ _outputts.printRows.apply(void 0, [
191
+ _state.sent(),
192
+ ctx.format
193
+ ])
194
+ ];
195
+ }
196
+ });
197
+ })();
198
+ })
199
+ ];
200
+ case 1:
201
+ _state.sent();
202
+ return [
203
+ 2
204
+ ];
205
+ }
206
+ });
207
+ })();
208
+ }
209
+ /* 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/cli/named.ts"],"sourcesContent":["import { find } from '../commands.ts';\nimport { printRows } from '../output.ts';\nimport { parseK, runSql, withDb } from './shared.ts';\nimport type { Ctx } from './types.ts';\n\n// Fallback when the first positional is not a command: a named query from config, either a\n// SQL string (run as-is) or a saved find (run through the `find` command's own machinery).\nexport default async function named(ctx: Ctx, queryName: string, params: string[]): Promise<void> {\n const cfg = ctx.resolveConfig();\n const entry = cfg.queries[queryName];\n if (entry === undefined) {\n console.error(`unknown query: \"${queryName}\"`);\n console.error(`valid queries: ${Object.keys(cfg.queries).sort().join(', ')}`);\n process.exit(2);\n }\n\n if (typeof entry === 'string') {\n runSql(cfg, entry, params, ctx.format, `query \"${queryName}\"`);\n return;\n }\n\n // A saved find's terms are fixed in config; there is nowhere for a positional to bind.\n if (params.length > 0) {\n ctx.usageError(`\"${queryName}\" is a saved find and takes no positional parameters; edit its \"find\" in sense.config.json, or use \"${ctx.name} find\" directly`);\n }\n const k = parseK(ctx) ?? entry.k;\n const where = ctx.values.where ?? entry.where;\n // --semantic upgrades a saved find the same way --where/--k override; absent means the\n // saved value (the flag has no default, so absent is distinguishable from false).\n const semantic = ctx.values.semantic === true || entry.semantic;\n await withDb(ctx, async (db, resolvedCfg) => printRows(await find(db, resolvedCfg, entry.find, { k, where, semantic }), ctx.format));\n}\n"],"names":["named","ctx","queryName","params","parseK","cfg","entry","k","where","semantic","resolveConfig","queries","undefined","console","error","Object","keys","sort","join","process","exit","runSql","format","length","usageError","name","values","withDb","db","resolvedCfg","find","printRows"],"mappings":";;;;+BAKA,2FAA2F;AAC3F,2FAA2F;AAC3F;;;eAA8BA;;;0BAPT;wBACK;wBACa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKxB,SAAeA,MAAMC,GAAQ,EAAEC,SAAiB,EAAEC,MAAgB;;YAkBrEC,SACIH,mBAlBRI,KACAC,OAgBAC,GACAC,OAGAC;;;;oBArBAJ,MAAMJ,IAAIS,aAAa;oBACvBJ,QAAQD,IAAIM,OAAO,CAACT,UAAU;oBACpC,IAAII,UAAUM,WAAW;wBACvBC,QAAQC,KAAK,CAAC,AAAC,mBAA4B,OAAVZ,WAAU;wBAC3CW,QAAQC,KAAK,CAAC,AAAC,kBAA4D,OAA3CC,OAAOC,IAAI,CAACX,IAAIM,OAAO,EAAEM,IAAI,GAAGC,IAAI,CAAC;wBACrEC,QAAQC,IAAI,CAAC;oBACf;oBAEA,IAAI,OAAOd,UAAU,UAAU;wBAC7Be,IAAAA,gBAAM,EAAChB,KAAKC,OAAOH,QAAQF,IAAIqB,MAAM,EAAE,AAAC,UAAmB,OAAVpB,WAAU;wBAC3D;;;oBACF;oBAEA,uFAAuF;oBACvF,IAAIC,OAAOoB,MAAM,GAAG,GAAG;wBACrBtB,IAAIuB,UAAU,CAAC,AAAC,IAAmHvB,OAAhHC,WAAU,wGAA+G,OAATD,IAAIwB,IAAI,EAAC;oBAC9I;oBACMlB,KAAIH,UAAAA,IAAAA,gBAAM,EAACH,kBAAPG,qBAAAA,UAAeE,MAAMC,CAAC;oBAC1BC,SAAQP,oBAAAA,IAAIyB,MAAM,CAAClB,KAAK,cAAhBP,+BAAAA,oBAAoBK,MAAME,KAAK;oBAC7C,uFAAuF;oBACvF,kFAAkF;oBAC5EC,WAAWR,IAAIyB,MAAM,CAACjB,QAAQ,KAAK,QAAQH,MAAMG,QAAQ;oBAC/D;;wBAAMkB,IAAAA,gBAAM,EAAC1B,KAAK,SAAO2B,IAAIC;;;;;4CAA0B;;gDAAMC,IAAAA,gBAAI,EAACF,IAAIC,aAAavB,MAAMwB,IAAI,EAAE;oDAAEvB,GAAAA;oDAAGC,OAAAA;oDAAOC,UAAAA;gDAAS;;;;;gDAAvEsB,mBAAS;oDAAC;oDAAiE9B,IAAIqB,MAAM;;;;;;;;;oBAAlI;;;;;;IACF"}
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
+ var _commandsts = require("../commands.js");
11
12
  var _outputts = require("../output.js");
12
- var _verbsts = require("../verbs.js");
13
13
  var _sharedts = require("./shared.js");
14
14
  function _array_like_to_array(arr, len) {
15
15
  if (len == null || len > arr.length) len = arr.length;
@@ -61,7 +61,7 @@ var peekCmd = function peekCmd(ctx) {
61
61
  var _ctx_rest = _sliced_to_array(ctx.rest, 1), pathArg = _ctx_rest[0];
62
62
  if (!pathArg) ctx.usageError("usage: ".concat(ctx.name, " peek <path>"));
63
63
  return (0, _sharedts.withDb)(ctx, function(db, cfg) {
64
- var result = (0, _verbsts.peek)(db, cfg, pathArg);
64
+ var result = (0, _commandsts.peek)(db, cfg, pathArg);
65
65
  console.log(ctx.format === 'json' ? JSON.stringify(result, null, 2) : (0, _outputts.renderPeek)(result));
66
66
  });
67
67
  };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/peek.ts"],"sourcesContent":["import { peek } from '../commands.ts';\nimport { renderPeek } from '../output.ts';\nimport { withDb } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst peekCmd: Command = (ctx) => {\n const [pathArg] = ctx.rest;\n if (!pathArg) ctx.usageError(`usage: ${ctx.name} peek <path>`);\n return withDb(ctx, (db, cfg) => {\n const result = peek(db, cfg, pathArg);\n console.log(ctx.format === 'json' ? JSON.stringify(result, null, 2) : renderPeek(result));\n });\n};\nexport default peekCmd;\n"],"names":["peekCmd","ctx","rest","pathArg","usageError","name","withDb","db","cfg","result","peek","console","log","format","JSON","stringify","renderPeek"],"mappings":";;;;+BAaA;;;eAAA;;;0BAbqB;wBACM;wBACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGvB,IAAMA,UAAmB,iBAACC;IACxB,IAAkBA,6BAAAA,IAAIC,IAAI,MAAnBC,UAAWF;IAClB,IAAI,CAACE,SAASF,IAAIG,UAAU,CAAC,AAAC,UAAkB,OAATH,IAAII,IAAI,EAAC;IAChD,OAAOC,IAAAA,gBAAM,EAACL,KAAK,SAACM,IAAIC;QACtB,IAAMC,SAASC,IAAAA,gBAAI,EAACH,IAAIC,KAAKL;QAC7BQ,QAAQC,GAAG,CAACX,IAAIY,MAAM,KAAK,SAASC,KAAKC,SAAS,CAACN,QAAQ,MAAM,KAAKO,IAAAA,oBAAU,EAACP;IACnF;AACF;IACA,WAAeT"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/query.ts"],"sourcesContent":["import { runSql } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst query: Command = (ctx) => {\n const [sql, ...params] = ctx.rest;\n if (!sql) ctx.usageError(`usage: ${ctx.name} query \"<sql>\" [params...]`);\n runSql(ctx.resolveConfig(), sql, params, ctx.format, 'ad-hoc query');\n};\nexport default query;\n"],"names":["query","ctx","rest","sql","params","usageError","name","runSql","resolveConfig","format"],"mappings":";;;;+BAQA;;;eAAA;;;wBARuB;;;;;;;;;;;;;;;;;;;;;;;;;;AAGvB,IAAMA,QAAiB,eAACC;IACtB,IAAyBA,sBAAAA,IAAIC,IAAI,GAA1BC,MAAkBF,cAAb,AAAGG,SAAUH,gBAAb;IACZ,IAAI,CAACE,KAAKF,IAAII,UAAU,CAAC,AAAC,UAAkB,OAATJ,IAAIK,IAAI,EAAC;IAC5CC,IAAAA,gBAAM,EAACN,IAAIO,aAAa,IAAIL,KAAKC,QAAQH,IAAIQ,MAAM,EAAE;AACvD;IACA,WAAeT"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/rebuild.ts"],"sourcesContent":["import { docCount, rebuild } from '../db.ts';\nimport { printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst rebuildCmd: Command = (ctx) => {\n const result = rebuild(ctx.resolveConfig());\n printWarnings(result.warnings);\n console.log(`rebuilt: ${docCount(result.db)} docs`);\n result.db.close();\n};\nexport default rebuildCmd;\n"],"names":["rebuildCmd","ctx","result","rebuild","resolveConfig","printWarnings","warnings","console","log","docCount","db","close"],"mappings":";;;;+BAUA;;;eAAA;;;oBAVkC;wBACJ;AAG9B,IAAMA,aAAsB,oBAACC;IAC3B,IAAMC,SAASC,IAAAA,aAAO,EAACF,IAAIG,aAAa;IACxCC,IAAAA,uBAAa,EAACH,OAAOI,QAAQ;IAC7BC,QAAQC,GAAG,CAAC,AAAC,YAA+B,OAApBC,IAAAA,cAAQ,EAACP,OAAOQ,EAAE,GAAE;IAC5CR,OAAOQ,EAAE,CAACC,KAAK;AACjB;IACA,WAAeX"}
@@ -1,6 +1,7 @@
1
1
  import type { ResolvedConfig } from '../config.js';
2
2
  import type { OpenResult } from '../db.js';
3
3
  import type { Ctx } from './types.js';
4
+ export declare function parseK(ctx: Ctx): number | undefined;
4
5
  export declare function printWarnings(warnings: string[]): void;
5
6
  export declare function withDb(ctx: Ctx, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void>;
6
7
  export declare function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: 'table' | 'json', label: string): void;
@@ -1,6 +1,7 @@
1
1
  import type { ResolvedConfig } from '../config.js';
2
2
  import type { OpenResult } from '../db.js';
3
3
  import type { Ctx } from './types.js';
4
+ export declare function parseK(ctx: Ctx): number | undefined;
4
5
  export declare function printWarnings(warnings: string[]): void;
5
6
  export declare function withDb(ctx: Ctx, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void>;
6
7
  export declare function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: 'table' | 'json', label: string): void;
@@ -9,6 +9,9 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ get parseK () {
13
+ return parseK;
14
+ },
12
15
  get printWarnings () {
13
16
  return printWarnings;
14
17
  },
@@ -175,6 +178,12 @@ function _ts_generator(thisArg, body) {
175
178
  };
176
179
  }
177
180
  }
181
+ function parseK(ctx) {
182
+ if (ctx.values.k === undefined) return undefined;
183
+ var k = Number(ctx.values.k);
184
+ if (!Number.isInteger(k) || k <= 0) ctx.usageError('--k expects a positive integer, got "'.concat(ctx.values.k, '"'));
185
+ return k;
186
+ }
178
187
  function printWarnings(warnings) {
179
188
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
180
189
  try {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/shared.ts"],"sourcesContent":["import type { ResolvedConfig } from '../config.ts';\nimport type { OpenResult } from '../db.ts';\nimport { open } from '../db.ts';\nimport type { Row } from '../output.ts';\nimport { printRows } from '../output.ts';\nimport { searchError } from '../search-error.ts';\nimport type { Ctx } from './types.ts';\n\n// --k must be a positive integer: SQLite reads a bound LIMIT of -1 as \"unlimited\" and 0 as\n// \"nothing\", and parseInt would silently truncate \"5.9\" -- all three are caller mistakes\n// worth a usage error, matching the config-level SavedFind validation.\nexport function parseK(ctx: Ctx): number | undefined {\n if (ctx.values.k === undefined) return undefined;\n const k = Number(ctx.values.k);\n if (!Number.isInteger(k) || k <= 0) ctx.usageError(`--k expects a positive integer, got \"${ctx.values.k}\"`);\n return k;\n}\n\n// Shared open-query-close envelope for commands that touch the tree.\n\nexport function printWarnings(warnings: string[]): void {\n for (const w of warnings) console.warn(w);\n}\n\nexport async function withDb(ctx: Ctx, fn: (db: OpenResult['db'], cfg: ResolvedConfig) => void | Promise<void>): Promise<void> {\n const cfg = ctx.resolveConfig();\n const { db, warnings } = open(cfg);\n printWarnings(warnings);\n try {\n await fn(db, cfg);\n } finally {\n db.close();\n }\n}\n\n// An unbound `?` silently binds NULL, so mismatched param counts fail loudly instead.\nexport function runSql(cfg: ResolvedConfig, sql: string, params: string[], format: 'table' | 'json', label: string): void {\n const placeholderCount = (sql.match(/\\?/g) ?? []).length;\n if (params.length !== placeholderCount) {\n console.error(`${label} expects ${placeholderCount} parameter(s), got ${params.length}`);\n process.exit(2);\n }\n const { db, warnings } = open(cfg);\n printWarnings(warnings);\n let rows: Row[];\n try {\n rows = db.prepare(sql).all(...params) as Row[];\n } catch (err) {\n db.close();\n // A saved query or ad-hoc SQL can carry `content MATCH ?` too, so the same FTS5\n // punctuation trap applies -- the bound parameters are the search terms there. SQL\n // without MATCH gets its error verbatim; search advice on a plain typo would mislead.\n if (/\\bMATCH\\b/i.test(sql)) throw searchError(err as Error, params.join(' '));\n throw err;\n }\n printRows(rows, format);\n db.close();\n}\n"],"names":["parseK","printWarnings","runSql","withDb","ctx","values","k","undefined","Number","isInteger","usageError","warnings","w","console","warn","fn","cfg","open","db","resolveConfig","close","sql","params","format","label","placeholderCount","match","length","error","process","exit","rows","prepare","all","err","test","searchError","join","printRows"],"mappings":";;;;;;;;;;;QAWgBA;eAAAA;;QASAC;eAAAA;;QAgBAC;eAAAA;;QAZMC;eAAAA;;;oBAtBD;wBAEK;6BACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMrB,SAASH,OAAOI,GAAQ;IAC7B,IAAIA,IAAIC,MAAM,CAACC,CAAC,KAAKC,WAAW,OAAOA;IACvC,IAAMD,IAAIE,OAAOJ,IAAIC,MAAM,CAACC,CAAC;IAC7B,IAAI,CAACE,OAAOC,SAAS,CAACH,MAAMA,KAAK,GAAGF,IAAIM,UAAU,CAAC,AAAC,wCAAoD,OAAbN,IAAIC,MAAM,CAACC,CAAC,EAAC;IACxG,OAAOA;AACT;AAIO,SAASL,cAAcU,QAAkB;QACzC,kCAAA,2BAAA;;QAAL,QAAK,YAAWA,6BAAX,SAAA,6BAAA,QAAA,yBAAA;YAAA,IAAMC,IAAN;YAAqBC,QAAQC,IAAI,CAACF;;;QAAlC;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;AACP;AAEO,SAAeT,OAAOC,GAAQ,EAAEW,EAAuE;;YACtGC,KACmBC,OAAjBC,IAAIP;;;;oBADNK,MAAMZ,IAAIe,aAAa;oBACJF,QAAAA,IAAAA,UAAI,EAACD,MAAtBE,KAAiBD,MAAjBC,IAAIP,WAAaM,MAAbN;oBACZV,cAAcU;;;;;;;;;oBAEZ;;wBAAMI,GAAGG,IAAIF;;;oBAAb;;;;;;oBAEAE,GAAGE,KAAK;;;;;;;;;;IAEZ;;AAGO,SAASlB,OAAOc,GAAmB,EAAEK,GAAW,EAAEC,MAAgB,EAAEC,MAAwB,EAAEC,KAAa;QACtFH;IAA1B,IAAMI,mBAAmB,EAACJ,aAAAA,IAAIK,KAAK,CAAC,oBAAVL,wBAAAA,aAAoB,EAAE,EAAEM,MAAM;IACxD,IAAIL,OAAOK,MAAM,KAAKF,kBAAkB;QACtCZ,QAAQe,KAAK,CAAC,AAAC,GAAmBH,OAAjBD,OAAM,aAAiDF,OAAtCG,kBAAiB,uBAAmC,OAAdH,OAAOK,MAAM;QACrFE,QAAQC,IAAI,CAAC;IACf;IACA,IAAyBb,QAAAA,IAAAA,UAAI,EAACD,MAAtBE,KAAiBD,MAAjBC,IAAIP,WAAaM,MAAbN;IACZV,cAAcU;IACd,IAAIoB;IACJ,IAAI;YACKb;QAAPa,OAAOb,CAAAA,cAAAA,GAAGc,OAAO,CAACX,MAAKY,GAAG,OAAnBf,aAAoB,qBAAGI;IAChC,EAAE,OAAOY,KAAK;QACZhB,GAAGE,KAAK;QACR,gFAAgF;QAChF,mFAAmF;QACnF,sFAAsF;QACtF,IAAI,aAAae,IAAI,CAACd,MAAM,MAAMe,IAAAA,0BAAW,EAACF,KAAcZ,OAAOe,IAAI,CAAC;QACxE,MAAMH;IACR;IACAI,IAAAA,mBAAS,EAACP,MAAMR;IAChBL,GAAGE,KAAK;AACV"}
@@ -60,6 +60,10 @@ var status = function status(ctx) {
60
60
  var e = (0, _configts.embedConfig)(cfg);
61
61
  var vectors = e ? vectorState(db) : null;
62
62
  var heartbeat = (0, _dbts.getMeta)(db, 'watch_heartbeat');
63
+ // Derived at open() (F): 3x the largest reconcile this cache has ever held its write
64
+ // transaction for, floored at 30s -- read back from the connection rather than
65
+ // recomputed here, so this always reports what open() actually set.
66
+ var busyTimeoutMs = db.prepare('PRAGMA busy_timeout').get().timeout;
63
67
  var result = {
64
68
  db: dbPath,
65
69
  docs: (0, _dbts.docCount)(db),
@@ -70,7 +74,8 @@ var status = function status(ctx) {
70
74
  model: e.model
71
75
  }, vectors !== null && vectors !== void 0 ? vectors : {}) : null,
72
76
  findDefaultWhere: (_ref = (_cfg_defaults = cfg.defaults) === null || _cfg_defaults === void 0 ? void 0 : (_cfg_defaults_find = _cfg_defaults.find) === null || _cfg_defaults_find === void 0 ? void 0 : _cfg_defaults_find.where) !== null && _ref !== void 0 ? _ref : null,
73
- watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null
77
+ watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null,
78
+ busyTimeoutMs: busyTimeoutMs
74
79
  };
75
80
  if (ctx.format === 'json') {
76
81
  console.log(JSON.stringify(result, null, 2));
@@ -84,6 +89,7 @@ var status = function status(ctx) {
84
89
  if (e) console.log("embed: ".concat(e.type, " ").concat(e.model).concat(vectors ? " (vectors: ".concat(vectors.embedded, " embedded, ").concat(vectors.pending, " pending — embedded on first --semantic query)") : ''));
85
90
  if (result.findDefaultWhere) console.log("find default scope: ".concat(result.findDefaultWhere, " (--where replaces it)"));
86
91
  console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: no watcher' : "watcher: last heartbeat ".concat(result.watcherHeartbeatSecondsAgo, "s ago"));
92
+ console.log("busy_timeout: ".concat(result.busyTimeoutMs, "ms (derived: 3x the largest reconcile this cache has recorded, floored at 30000ms)"));
87
93
  }
88
94
  db.close();
89
95
  };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/status.ts"],"sourcesContent":["import { embedConfig, featureStates } from '../config.ts';\nimport { docCount, getMeta, open } from '../db.ts';\nimport { printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\n// Vectors are computed on the first semantic query, not at reconcile, so a tree can be\n// embed-enabled with nothing embedded yet -- reported here because a fast `rebuild` on an\n// embed tree otherwise reads as \"the feature isn't on\".\nfunction vectorState(db: ReturnType<typeof open>['db']): { embedded: number; pending: number } | null {\n try {\n const row = db.prepare('SELECT COUNT(vector) AS embedded, COUNT(*) - COUNT(vector) AS pending FROM embeddings').get() as { embedded: number; pending: number };\n return row;\n } catch {\n return null;\n }\n}\n\nconst status: Command = (ctx) => {\n const cfg = ctx.resolveConfig();\n const { db, dbPath, warnings } = open(cfg);\n printWarnings(warnings);\n\n const features = featureStates(cfg);\n const e = embedConfig(cfg);\n const vectors = e ? vectorState(db) : null;\n const heartbeat = getMeta(db, 'watch_heartbeat');\n // Derived at open() (F): 3x the largest reconcile this cache has ever held its write\n // transaction for, floored at 30s -- read back from the connection rather than\n // recomputed here, so this always reports what open() actually set.\n const busyTimeoutMs = (db.prepare('PRAGMA busy_timeout').get() as { timeout: number }).timeout;\n const result = {\n db: dbPath,\n docs: docCount(db),\n features: features.on,\n featuresOff: features.off,\n embed: e ? { type: e.type, model: e.model, ...(vectors ?? {}) } : null,\n findDefaultWhere: cfg.defaults?.find?.where ?? null,\n watcherHeartbeatSecondsAgo: heartbeat ? Math.round((Date.now() - Date.parse(heartbeat)) / 1000) : null,\n busyTimeoutMs,\n };\n\n if (ctx.format === 'json') {\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(`db: ${result.db}`);\n console.log(`docs: ${result.docs}`);\n const off = features.off.length > 0 ? ` · off: ${features.off.map((name) => `${name} (features.${name})`).join(', ')}` : '';\n console.log(`features: ${features.on.join(', ')}${off}`);\n if (e) console.log(`embed: ${e.type} ${e.model}${vectors ? ` (vectors: ${vectors.embedded} embedded, ${vectors.pending} pending — embedded on first --semantic query)` : ''}`);\n if (result.findDefaultWhere) console.log(`find default scope: ${result.findDefaultWhere} (--where replaces it)`);\n console.log(result.watcherHeartbeatSecondsAgo === null ? 'watcher: no watcher' : `watcher: last heartbeat ${result.watcherHeartbeatSecondsAgo}s ago`);\n console.log(`busy_timeout: ${result.busyTimeoutMs}ms (derived: 3x the largest reconcile this cache has recorded, floored at 30000ms)`);\n }\n db.close();\n};\nexport default status;\n"],"names":["vectorState","db","row","prepare","get","status","ctx","cfg","resolveConfig","open","dbPath","warnings","printWarnings","features","featureStates","e","embedConfig","vectors","heartbeat","getMeta","busyTimeoutMs","timeout","result","docs","docCount","on","featuresOff","off","embed","type","model","findDefaultWhere","defaults","find","where","watcherHeartbeatSecondsAgo","Math","round","Date","now","parse","format","console","log","JSON","stringify","length","map","name","join","embedded","pending","close"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli/watch.ts"],"sourcesContent":["import type { WatchEvent } from '../watch.ts';\nimport { runWatch } from '../watch.ts';\nimport { printWarnings } from './shared.ts';\nimport type { Command } from './types.ts';\n\nconst watch: Command = async (ctx) => {\n await runWatch(ctx.resolveConfig(), {\n force: ctx.values.force,\n onEvent: (event: WatchEvent) => {\n if (event.type === 'started') {\n console.log(`${ctx.name} watch: watching ${event.baseDir}`);\n console.log(`${ctx.name} watch: db ${event.dbPath}`);\n } else if (event.type === 'reconciled') {\n printWarnings(event.warnings);\n if (event.parsed > 0) console.log(`${ctx.name} watch: reconciled, ${event.parsed} file(s) reparsed (${event.total} total)`);\n } else {\n console.error(`${ctx.name} watch: reconcile error: ${event.message}`);\n }\n },\n });\n};\nexport default watch;\n"],"names":["watch","ctx","runWatch","resolveConfig","force","values","onEvent","event","type","console","log","name","baseDir","dbPath","printWarnings","warnings","parsed","total","error","message"],"mappings":";;;;+BAqBA;;;eAAA;;;uBApByB;wBACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG9B,IAAMA,QAAiB,eAAOC;;;;;oBAC5B;;wBAAMC,IAAAA,iBAAQ,EAACD,IAAIE,aAAa,IAAI;4BAClCC,OAAOH,IAAII,MAAM,CAACD,KAAK;4BACvBE,SAAS,SAATA,QAAUC;gCACR,IAAIA,MAAMC,IAAI,KAAK,WAAW;oCAC5BC,QAAQC,GAAG,CAAC,AAAC,GAA8BH,OAA5BN,IAAIU,IAAI,EAAC,qBAAiC,OAAdJ,MAAMK,OAAO;oCACxDH,QAAQC,GAAG,CAAC,AAAC,GAAwBH,OAAtBN,IAAIU,IAAI,EAAC,eAA0B,OAAbJ,MAAMM,MAAM;gCACnD,OAAO,IAAIN,MAAMC,IAAI,KAAK,cAAc;oCACtCM,IAAAA,uBAAa,EAACP,MAAMQ,QAAQ;oCAC5B,IAAIR,MAAMS,MAAM,GAAG,GAAGP,QAAQC,GAAG,CAAC,AAAC,GAAiCH,OAA/BN,IAAIU,IAAI,EAAC,wBAAwDJ,OAAlCA,MAAMS,MAAM,EAAC,uBAAiC,OAAZT,MAAMU,KAAK,EAAC;gCACpH,OAAO;oCACLR,QAAQS,KAAK,CAAC,AAAC,GAAsCX,OAApCN,IAAIU,IAAI,EAAC,6BAAyC,OAAdJ,MAAMY,OAAO;gCACpE;4BACF;wBACF;;;oBAbA;;;;;;IAcF;;IACA,WAAenB"}
package/dist/cjs/cli.js CHANGED
@@ -11,7 +11,7 @@ Object.defineProperty(exports, // Thrown errors -> exit 1 with the message verba
11
11
  });
12
12
  var _nodemodule = require("node:module");
13
13
  var _nodeutil = require("node:util");
14
- var _indexts = require("./commands/index.js");
14
+ var _indexts = require("./cli/index.js");
15
15
  var _configts = require("./config.js");
16
16
  function _array_like_to_array(arr, len) {
17
17
  if (len == null || len > arr.length) len = arr.length;
@@ -207,7 +207,7 @@ function _ts_generator(thisArg, body) {
207
207
  };
208
208
  }
209
209
  }
210
- // Parsing and dispatch only. Commands live in src/commands/, one file each, lazy-loaded --
210
+ // Parsing and dispatch only. Commands live in src/cli/, one file each, lazy-loaded --
211
211
  // nothing tree- or dependency-heavy may be imported at the top of this file.
212
212
  // Works from dist/cjs and dist/esm alike: walk up past the dist type-marker package.json.
213
213
  function packageVersion() {
@@ -226,11 +226,11 @@ function packageVersion() {
226
226
  return 'unknown';
227
227
  }
228
228
  function usage(name) {
229
- return "usage: ".concat(name, " <name> [params...] [--format table|json] [--config path]\n") + " ".concat(name, ' query "<sql>" [params...]\n') + " ".concat(name, ' find "<terms>" [--where "<sql>"] [--k n] [--semantic]\n') + " ".concat(name, " map\n") + " ".concat(name, " peek <path>\n") + " ".concat(name, " --list\n") + " ".concat(name, " init\n") + " ".concat(name, " watch [--force]\n") + " ".concat(name, " status\n") + " ".concat(name, " rebuild\n") + " ".concat(name, " --version");
229
+ return "usage: ".concat(name, " <name> [params...] [--format table|json] [--config path]\n") + " ".concat(name, ' query "<sql>" [params...]\n') + " ".concat(name, ' find "<terms>" [--where "<sql>"] [--k n] [--semantic]\n') + " ".concat(name, " map\n") + " ".concat(name, " peek <path>\n") + " ".concat(name, " --list\n") + " ".concat(name, " init\n") + " ".concat(name, " watch [--force]\n") + " ".concat(name, " status\n") + " ".concat(name, " check\n") + " ".concat(name, " rebuild\n") + " ".concat(name, " --version");
230
230
  }
231
231
  function cli(argv, name) {
232
232
  return _async_to_generator(function() {
233
- var values, positionals, ref, ctx, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, queryName, _positionals, first, params, load, err;
233
+ var values, positionals, ref, ctx, queries, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, queryName, _positionals, first, params, load, err;
234
234
  return _ts_generator(this, function(_state) {
235
235
  switch(_state.label){
236
236
  case 0:
@@ -253,8 +253,7 @@ function cli(argv, name) {
253
253
  type: 'string'
254
254
  },
255
255
  semantic: {
256
- type: 'boolean',
257
- default: false
256
+ type: 'boolean'
258
257
  },
259
258
  list: {
260
259
  type: 'boolean',
@@ -318,16 +317,17 @@ function cli(argv, name) {
318
317
  case 1:
319
318
  _state.trys.push([
320
319
  1,
321
- 7,
320
+ 8,
322
321
  ,
323
- 8
322
+ 9
324
323
  ]);
325
324
  if (values.list) {
325
+ queries = ctx.resolveConfig().queries;
326
326
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
327
327
  try {
328
- for(_iterator = Object.keys(ctx.resolveConfig().queries).sort()[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
328
+ for(_iterator = Object.keys(queries).sort()[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
329
329
  queryName = _step.value;
330
- console.log(queryName);
330
+ console.log(typeof queries[queryName] === 'string' ? queryName : "".concat(queryName, " (find)"));
331
331
  }
332
332
  } catch (err) {
333
333
  _didIteratorError = true;
@@ -370,32 +370,37 @@ function cli(argv, name) {
370
370
  _state.sent();
371
371
  return [
372
372
  3,
373
- 6
373
+ 7
374
374
  ];
375
375
  case 4:
376
376
  return [
377
377
  4,
378
378
  Promise.resolve().then(function() {
379
- return /*#__PURE__*/ _interop_require_wildcard(require("./commands/named.js"));
379
+ return /*#__PURE__*/ _interop_require_wildcard(require("./cli/named.js"));
380
380
  })
381
381
  ];
382
382
  case 5:
383
- _state.sent().default(ctx, first, params);
384
- _state.label = 6;
383
+ return [
384
+ 4,
385
+ _state.sent().default(ctx, first, params)
386
+ ];
385
387
  case 6:
388
+ _state.sent();
389
+ _state.label = 7;
390
+ case 7:
386
391
  return [
387
392
  3,
388
- 8
393
+ 9
389
394
  ];
390
- case 7:
395
+ case 8:
391
396
  err = _state.sent();
392
397
  console.error(err.message);
393
398
  process.exit(1);
394
399
  return [
395
400
  3,
396
- 8
401
+ 9
397
402
  ];
398
- case 8:
403
+ case 9:
399
404
  return [
400
405
  2
401
406
  ];
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { parseArgs } from 'node:util';\nimport { COMMANDS } from './commands/index.ts';\nimport type { Ctx } from './commands/types.ts';\nimport { loadConfig, SUPPORTED_CONFIG_VERSION } from './config.ts';\n\n// Parsing and dispatch only. Commands live in src/commands/, one file each, lazy-loaded --\n// nothing tree- or dependency-heavy may be imported at the top of this file.\n\n// Works from dist/cjs and dist/esm alike: walk up past the dist type-marker package.json.\nfunction packageVersion(): string {\n const load = createRequire(import.meta.url);\n for (const rel of ['../package.json', '../../package.json', '../../../package.json']) {\n try {\n const pkg = load(rel) as { name?: string; version?: string };\n if (pkg.name === 'sensemaking' && pkg.version) return pkg.version;\n } catch {}\n }\n return 'unknown';\n}\n\nfunction usage(name: string): string {\n return (\n `usage: ${name} <name> [params...] [--format table|json] [--config path]\\n` +\n ` ${name} query \"<sql>\" [params...]\\n` +\n ` ${name} find \"<terms>\" [--where \"<sql>\"] [--k n] [--semantic]\\n` +\n ` ${name} map\\n` +\n ` ${name} peek <path>\\n` +\n ` ${name} --list\\n` +\n ` ${name} init\\n` +\n ` ${name} watch [--force]\\n` +\n ` ${name} status\\n` +\n ` ${name} rebuild\\n` +\n ` ${name} --version`\n );\n}\n\n// Thrown errors -> exit 1 with the message verbatim; usage errors exit 2 directly.\nexport default async function cli(argv: string[], name: string): Promise<void> {\n let values: Record<string, string | boolean | undefined>;\n let positionals: string[];\n try {\n ({ values, positionals } = parseArgs({\n args: argv,\n options: {\n format: { type: 'string', default: 'table' },\n config: { type: 'string' },\n where: { type: 'string' },\n k: { type: 'string' },\n semantic: { type: 'boolean', default: false },\n list: { type: 'boolean', default: false },\n force: { type: 'boolean', default: false },\n version: { type: 'boolean', default: false, short: 'v' },\n help: { type: 'boolean', default: false, short: 'h' },\n },\n allowPositionals: true,\n }));\n } catch (err) {\n console.error((err as Error).message);\n console.error(usage(name));\n process.exit(2);\n }\n\n if (values.version) {\n console.log(`v${packageVersion()}`);\n return;\n }\n if (values.help) {\n console.log(usage(name));\n return;\n }\n\n const ctx: Ctx = {\n name,\n rest: positionals.slice(1),\n format: values.format === 'json' ? 'json' : 'table',\n values: values as Ctx['values'],\n resolveConfig() {\n const cfg = loadConfig(values.config as string | undefined);\n if (cfg.migratedFrom !== undefined) {\n console.warn(`${name}: migrated ${cfg.configPath} from config version ${cfg.migratedFrom} to ${SUPPORTED_CONFIG_VERSION}`);\n }\n if (cfg.unknownKeys !== undefined) {\n console.warn(`${name}: ${cfg.configPath} sets ${cfg.unknownKeys.join(', ')}, which this build does not read (no effect); see schema.json for the keys it does`);\n }\n return cfg;\n },\n usageError(message) {\n console.error(message);\n process.exit(2);\n },\n };\n\n try {\n if (values.list) {\n for (const queryName of Object.keys(ctx.resolveConfig().queries).sort()) console.log(queryName);\n return;\n }\n\n const [first, ...params] = positionals;\n if (!first) {\n console.error(usage(name));\n process.exit(2);\n }\n\n const load = COMMANDS[first];\n if (load) await (await load()).default(ctx);\n else (await import('./commands/named.ts')).default(ctx, first, params);\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n}\n"],"names":["cli","packageVersion","load","createRequire","rel","pkg","name","version","usage","argv","values","positionals","ctx","queryName","first","params","err","parseArgs","args","options","format","type","default","config","where","k","semantic","list","force","short","help","allowPositionals","console","error","message","process","exit","log","rest","slice","resolveConfig","cfg","loadConfig","migratedFrom","undefined","warn","configPath","SUPPORTED_CONFIG_VERSION","unknownKeys","join","usageError","Object","keys","queries","sort","COMMANDS"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/cli.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { parseArgs } from 'node:util';\nimport { COMMANDS } from './cli/index.ts';\nimport type { Ctx } from './cli/types.ts';\nimport { loadConfig, SUPPORTED_CONFIG_VERSION } from './config.ts';\n\n// Parsing and dispatch only. Commands live in src/cli/, one file each, lazy-loaded --\n// nothing tree- or dependency-heavy may be imported at the top of this file.\n\n// Works from dist/cjs and dist/esm alike: walk up past the dist type-marker package.json.\nfunction packageVersion(): string {\n const load = createRequire(import.meta.url);\n for (const rel of ['../package.json', '../../package.json', '../../../package.json']) {\n try {\n const pkg = load(rel) as { name?: string; version?: string };\n if (pkg.name === 'sensemaking' && pkg.version) return pkg.version;\n } catch {}\n }\n return 'unknown';\n}\n\nfunction usage(name: string): string {\n return (\n `usage: ${name} <name> [params...] [--format table|json] [--config path]\\n` +\n ` ${name} query \"<sql>\" [params...]\\n` +\n ` ${name} find \"<terms>\" [--where \"<sql>\"] [--k n] [--semantic]\\n` +\n ` ${name} map\\n` +\n ` ${name} peek <path>\\n` +\n ` ${name} --list\\n` +\n ` ${name} init\\n` +\n ` ${name} watch [--force]\\n` +\n ` ${name} status\\n` +\n ` ${name} check\\n` +\n ` ${name} rebuild\\n` +\n ` ${name} --version`\n );\n}\n\n// Thrown errors -> exit 1 with the message verbatim; usage errors exit 2 directly.\nexport default async function cli(argv: string[], name: string): Promise<void> {\n let values: Record<string, string | boolean | undefined>;\n let positionals: string[];\n try {\n ({ values, positionals } = parseArgs({\n args: argv,\n options: {\n format: { type: 'string', default: 'table' },\n config: { type: 'string' },\n where: { type: 'string' },\n k: { type: 'string' },\n semantic: { type: 'boolean' },\n list: { type: 'boolean', default: false },\n force: { type: 'boolean', default: false },\n version: { type: 'boolean', default: false, short: 'v' },\n help: { type: 'boolean', default: false, short: 'h' },\n },\n allowPositionals: true,\n }));\n } catch (err) {\n console.error((err as Error).message);\n console.error(usage(name));\n process.exit(2);\n }\n\n if (values.version) {\n console.log(`v${packageVersion()}`);\n return;\n }\n if (values.help) {\n console.log(usage(name));\n return;\n }\n\n const ctx: Ctx = {\n name,\n rest: positionals.slice(1),\n format: values.format === 'json' ? 'json' : 'table',\n values: values as Ctx['values'],\n resolveConfig() {\n const cfg = loadConfig(values.config as string | undefined);\n if (cfg.migratedFrom !== undefined) {\n console.warn(`${name}: migrated ${cfg.configPath} from config version ${cfg.migratedFrom} to ${SUPPORTED_CONFIG_VERSION}`);\n }\n if (cfg.unknownKeys !== undefined) {\n console.warn(`${name}: ${cfg.configPath} sets ${cfg.unknownKeys.join(', ')}, which this build does not read (no effect); see schema.json for the keys it does`);\n }\n return cfg;\n },\n usageError(message) {\n console.error(message);\n process.exit(2);\n },\n };\n\n try {\n if (values.list) {\n const queries = ctx.resolveConfig().queries;\n for (const queryName of Object.keys(queries).sort()) {\n console.log(typeof queries[queryName] === 'string' ? queryName : `${queryName} (find)`);\n }\n return;\n }\n\n const [first, ...params] = positionals;\n if (!first) {\n console.error(usage(name));\n process.exit(2);\n }\n\n const load = COMMANDS[first];\n if (load) await (await load()).default(ctx);\n else await (await import('./cli/named.ts')).default(ctx, first, params);\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n}\n"],"names":["cli","packageVersion","load","createRequire","rel","pkg","name","version","usage","argv","values","positionals","ctx","queries","queryName","first","params","err","parseArgs","args","options","format","type","default","config","where","k","semantic","list","force","short","help","allowPositionals","console","error","message","process","exit","log","rest","slice","resolveConfig","cfg","loadConfig","migratedFrom","undefined","warn","configPath","SUPPORTED_CONFIG_VERSION","unknownKeys","join","usageError","Object","keys","sort","COMMANDS"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import type { DatabaseSync } from 'node:sqlite';
2
- import type { Config, FeatureName } from './config.js';
2
+ import type { FeatureName, ResolvedConfig } from './config.js';
3
3
  import type { Row } from './output.js';
4
4
  export interface FindOptions {
5
5
  k?: number;
6
6
  where?: string;
7
7
  semantic?: boolean;
8
8
  }
9
- export declare function find(db: DatabaseSync, cfg: Config, terms: string, opts?: FindOptions): Promise<Row[]>;
9
+ export declare function find(db: DatabaseSync, cfg: ResolvedConfig, terms: string, opts?: FindOptions): Promise<Row[]>;
10
10
  export interface TreeMap {
11
11
  docs: {
12
12
  count: number;
@@ -21,7 +21,7 @@ export interface TreeMap {
21
21
  hubs: Row[];
22
22
  recent: Row[];
23
23
  }
24
- export declare function mapTree(db: DatabaseSync, cfg: Config): TreeMap;
24
+ export declare function mapTree(db: DatabaseSync, cfg: ResolvedConfig): TreeMap;
25
25
  export interface Peek {
26
26
  path: string;
27
27
  tokens: number;
@@ -30,9 +30,10 @@ export interface Peek {
30
30
  outbound: string[];
31
31
  backlinks: string[];
32
32
  unresolved: string[];
33
+ sectionsTotal: number;
33
34
  outboundTotal: number;
34
35
  backlinksTotal: number;
35
36
  unresolvedTotal: number;
36
37
  off: FeatureName[];
37
38
  }
38
- export declare function peek(db: DatabaseSync, cfg: Config, pathArg: string): Peek;
39
+ export declare function peek(db: DatabaseSync, cfg: ResolvedConfig, pathArg: string): Peek;
@@ -1,12 +1,12 @@
1
1
  import type { DatabaseSync } from 'node:sqlite';
2
- import type { Config, FeatureName } from './config.js';
2
+ import type { FeatureName, ResolvedConfig } from './config.js';
3
3
  import type { Row } from './output.js';
4
4
  export interface FindOptions {
5
5
  k?: number;
6
6
  where?: string;
7
7
  semantic?: boolean;
8
8
  }
9
- export declare function find(db: DatabaseSync, cfg: Config, terms: string, opts?: FindOptions): Promise<Row[]>;
9
+ export declare function find(db: DatabaseSync, cfg: ResolvedConfig, terms: string, opts?: FindOptions): Promise<Row[]>;
10
10
  export interface TreeMap {
11
11
  docs: {
12
12
  count: number;
@@ -21,7 +21,7 @@ export interface TreeMap {
21
21
  hubs: Row[];
22
22
  recent: Row[];
23
23
  }
24
- export declare function mapTree(db: DatabaseSync, cfg: Config): TreeMap;
24
+ export declare function mapTree(db: DatabaseSync, cfg: ResolvedConfig): TreeMap;
25
25
  export interface Peek {
26
26
  path: string;
27
27
  tokens: number;
@@ -30,9 +30,10 @@ export interface Peek {
30
30
  outbound: string[];
31
31
  backlinks: string[];
32
32
  unresolved: string[];
33
+ sectionsTotal: number;
33
34
  outboundTotal: number;
34
35
  backlinksTotal: number;
35
36
  unresolvedTotal: number;
36
37
  off: FeatureName[];
37
38
  }
38
- export declare function peek(db: DatabaseSync, cfg: Config, pathArg: string): Peek;
39
+ export declare function peek(db: DatabaseSync, cfg: ResolvedConfig, pathArg: string): Peek;