tenbrains 2.1.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 (183) hide show
  1. package/AGENTS.md +112 -0
  2. package/README.md +218 -0
  3. package/dist/ai/analyzer.d.ts +28 -0
  4. package/dist/ai/analyzer.d.ts.map +1 -0
  5. package/dist/ai/analyzer.js +35 -0
  6. package/dist/ai/analyzer.js.map +1 -0
  7. package/dist/ai/client.d.ts +12 -0
  8. package/dist/ai/client.d.ts.map +1 -0
  9. package/dist/ai/client.js +152 -0
  10. package/dist/ai/client.js.map +1 -0
  11. package/dist/ai/json.d.ts +7 -0
  12. package/dist/ai/json.d.ts.map +1 -0
  13. package/dist/ai/json.js +57 -0
  14. package/dist/ai/json.js.map +1 -0
  15. package/dist/ai/mock.d.ts +6 -0
  16. package/dist/ai/mock.d.ts.map +1 -0
  17. package/dist/ai/mock.js +66 -0
  18. package/dist/ai/mock.js.map +1 -0
  19. package/dist/ai/prompts.d.ts +19 -0
  20. package/dist/ai/prompts.d.ts.map +1 -0
  21. package/dist/ai/prompts.js +40 -0
  22. package/dist/ai/prompts.js.map +1 -0
  23. package/dist/ai/providers.d.ts +22 -0
  24. package/dist/ai/providers.d.ts.map +1 -0
  25. package/dist/ai/providers.js +56 -0
  26. package/dist/ai/providers.js.map +1 -0
  27. package/dist/ai/resolve.d.ts +24 -0
  28. package/dist/ai/resolve.d.ts.map +1 -0
  29. package/dist/ai/resolve.js +33 -0
  30. package/dist/ai/resolve.js.map +1 -0
  31. package/dist/bin/preflight.d.ts +2 -0
  32. package/dist/bin/preflight.d.ts.map +1 -0
  33. package/dist/bin/preflight.js +11 -0
  34. package/dist/bin/preflight.js.map +1 -0
  35. package/dist/bin/tenbrains.d.ts +3 -0
  36. package/dist/bin/tenbrains.d.ts.map +1 -0
  37. package/dist/bin/tenbrains.js +9 -0
  38. package/dist/bin/tenbrains.js.map +1 -0
  39. package/dist/cli.d.ts +4 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +554 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/commands/analyze.d.ts +7 -0
  44. package/dist/commands/analyze.d.ts.map +1 -0
  45. package/dist/commands/analyze.js +204 -0
  46. package/dist/commands/analyze.js.map +1 -0
  47. package/dist/commands/bookmark.d.ts +9 -0
  48. package/dist/commands/bookmark.d.ts.map +1 -0
  49. package/dist/commands/bookmark.js +120 -0
  50. package/dist/commands/bookmark.js.map +1 -0
  51. package/dist/commands/config.d.ts +15 -0
  52. package/dist/commands/config.d.ts.map +1 -0
  53. package/dist/commands/config.js +142 -0
  54. package/dist/commands/config.js.map +1 -0
  55. package/dist/commands/db.d.ts +9 -0
  56. package/dist/commands/db.d.ts.map +1 -0
  57. package/dist/commands/db.js +64 -0
  58. package/dist/commands/db.js.map +1 -0
  59. package/dist/commands/digest.d.ts +19 -0
  60. package/dist/commands/digest.d.ts.map +1 -0
  61. package/dist/commands/digest.js +71 -0
  62. package/dist/commands/digest.js.map +1 -0
  63. package/dist/commands/import.d.ts +11 -0
  64. package/dist/commands/import.d.ts.map +1 -0
  65. package/dist/commands/import.js +78 -0
  66. package/dist/commands/import.js.map +1 -0
  67. package/dist/commands/learn.d.ts +9 -0
  68. package/dist/commands/learn.d.ts.map +1 -0
  69. package/dist/commands/learn.js +149 -0
  70. package/dist/commands/learn.js.map +1 -0
  71. package/dist/commands/manifest.d.ts +13 -0
  72. package/dist/commands/manifest.d.ts.map +1 -0
  73. package/dist/commands/manifest.js +62 -0
  74. package/dist/commands/manifest.js.map +1 -0
  75. package/dist/commands/record.d.ts +10 -0
  76. package/dist/commands/record.d.ts.map +1 -0
  77. package/dist/commands/record.js +37 -0
  78. package/dist/commands/record.js.map +1 -0
  79. package/dist/commands/search.d.ts +5 -0
  80. package/dist/commands/search.d.ts.map +1 -0
  81. package/dist/commands/search.js +33 -0
  82. package/dist/commands/search.js.map +1 -0
  83. package/dist/commands/shared.d.ts +9 -0
  84. package/dist/commands/shared.d.ts.map +1 -0
  85. package/dist/commands/shared.js +13 -0
  86. package/dist/commands/shared.js.map +1 -0
  87. package/dist/commands/suggest.d.ts +9 -0
  88. package/dist/commands/suggest.d.ts.map +1 -0
  89. package/dist/commands/suggest.js +102 -0
  90. package/dist/commands/suggest.js.map +1 -0
  91. package/dist/commands/takeaway.d.ts +9 -0
  92. package/dist/commands/takeaway.d.ts.map +1 -0
  93. package/dist/commands/takeaway.js +167 -0
  94. package/dist/commands/takeaway.js.map +1 -0
  95. package/dist/core/config.d.ts +52 -0
  96. package/dist/core/config.d.ts.map +1 -0
  97. package/dist/core/config.js +180 -0
  98. package/dist/core/config.js.map +1 -0
  99. package/dist/core/context.d.ts +28 -0
  100. package/dist/core/context.d.ts.map +1 -0
  101. package/dist/core/context.js +40 -0
  102. package/dist/core/context.js.map +1 -0
  103. package/dist/core/errors.d.ts +33 -0
  104. package/dist/core/errors.d.ts.map +1 -0
  105. package/dist/core/errors.js +82 -0
  106. package/dist/core/errors.js.map +1 -0
  107. package/dist/core/input.d.ts +9 -0
  108. package/dist/core/input.d.ts.map +1 -0
  109. package/dist/core/input.js +47 -0
  110. package/dist/core/input.js.map +1 -0
  111. package/dist/core/opts.d.ts +8 -0
  112. package/dist/core/opts.d.ts.map +1 -0
  113. package/dist/core/opts.js +38 -0
  114. package/dist/core/opts.js.map +1 -0
  115. package/dist/core/output.d.ts +58 -0
  116. package/dist/core/output.d.ts.map +1 -0
  117. package/dist/core/output.js +76 -0
  118. package/dist/core/output.js.map +1 -0
  119. package/dist/core/paths.d.ts +20 -0
  120. package/dist/core/paths.d.ts.map +1 -0
  121. package/dist/core/paths.js +31 -0
  122. package/dist/core/paths.js.map +1 -0
  123. package/dist/core/text.d.ts +10 -0
  124. package/dist/core/text.d.ts.map +1 -0
  125. package/dist/core/text.js +132 -0
  126. package/dist/core/text.js.map +1 -0
  127. package/dist/core/validate.d.ts +5 -0
  128. package/dist/core/validate.d.ts.map +1 -0
  129. package/dist/core/validate.js +17 -0
  130. package/dist/core/validate.js.map +1 -0
  131. package/dist/db/database.d.ts +27 -0
  132. package/dist/db/database.d.ts.map +1 -0
  133. package/dist/db/database.js +90 -0
  134. package/dist/db/database.js.map +1 -0
  135. package/dist/db/fts.d.ts +12 -0
  136. package/dist/db/fts.d.ts.map +1 -0
  137. package/dist/db/fts.js +42 -0
  138. package/dist/db/fts.js.map +1 -0
  139. package/dist/db/migrations.d.ts +20 -0
  140. package/dist/db/migrations.d.ts.map +1 -0
  141. package/dist/db/migrations.js +243 -0
  142. package/dist/db/migrations.js.map +1 -0
  143. package/dist/db/repositories.d.ts +130 -0
  144. package/dist/db/repositories.d.ts.map +1 -0
  145. package/dist/db/repositories.js +418 -0
  146. package/dist/db/repositories.js.map +1 -0
  147. package/dist/domain/learn.d.ts +25 -0
  148. package/dist/domain/learn.d.ts.map +1 -0
  149. package/dist/domain/learn.js +85 -0
  150. package/dist/domain/learn.js.map +1 -0
  151. package/dist/domain/schemas.d.ts +169 -0
  152. package/dist/domain/schemas.d.ts.map +1 -0
  153. package/dist/domain/schemas.js +54 -0
  154. package/dist/domain/schemas.js.map +1 -0
  155. package/dist/domain/search.d.ts +32 -0
  156. package/dist/domain/search.d.ts.map +1 -0
  157. package/dist/domain/search.js +77 -0
  158. package/dist/domain/search.js.map +1 -0
  159. package/dist/domain/suggest.d.ts +17 -0
  160. package/dist/domain/suggest.d.ts.map +1 -0
  161. package/dist/domain/suggest.js +114 -0
  162. package/dist/domain/suggest.js.map +1 -0
  163. package/dist/domain/tags.d.ts +9 -0
  164. package/dist/domain/tags.d.ts.map +1 -0
  165. package/dist/domain/tags.js +40 -0
  166. package/dist/domain/tags.js.map +1 -0
  167. package/dist/domain/types.d.ts +84 -0
  168. package/dist/domain/types.d.ts.map +1 -0
  169. package/dist/domain/types.js +2 -0
  170. package/dist/domain/types.js.map +1 -0
  171. package/dist/index.d.ts +19 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +18 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/x/archive.d.ts +32 -0
  176. package/dist/x/archive.d.ts.map +1 -0
  177. package/dist/x/archive.js +108 -0
  178. package/dist/x/archive.js.map +1 -0
  179. package/dist/x/client.d.ts +61 -0
  180. package/dist/x/client.d.ts.map +1 -0
  181. package/dist/x/client.js +321 -0
  182. package/dist/x/client.js.map +1 -0
  183. package/package.json +58 -0
package/dist/cli.js ADDED
@@ -0,0 +1,554 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { Command, CommanderError } from "commander";
3
+ import { analyzeCommand, analyzeGetCommand, analyzeListCommand } from "./commands/analyze.js";
4
+ import { bookmarkAddCommand, bookmarkListCommand, bookmarkRemoveCommand, bookmarkShowCommand, bookmarkTagCommand, } from "./commands/bookmark.js";
5
+ import { configGetCommand, configListCommand, configPathCommand, configSetCommand, configUnsetCommand, setupCommand, } from "./commands/config.js";
6
+ import { dbMigrateCommand, dbReindexCommand, dbResetCommand, dbStatsCommand, dbVacuumCommand, } from "./commands/db.js";
7
+ import { digestCommand } from "./commands/digest.js";
8
+ import { importXArchiveCommand } from "./commands/import.js";
9
+ import { learnDoneCommand, learnGenerateCommand, learnListCommand, learnShowCommand, learnTodayCommand, } from "./commands/learn.js";
10
+ import { manifestCommand } from "./commands/manifest.js";
11
+ import { recordGetCommand } from "./commands/record.js";
12
+ import { searchCommand } from "./commands/search.js";
13
+ import { suggestAddCommand, suggestDismissCommand, suggestGenerateCommand, suggestListCommand, suggestSaveCommand, } from "./commands/suggest.js";
14
+ import { takeawayFollowCommand, takeawayListCommand, takeawayRefreshCommand, takeawayShowCommand, takeawayUnfollowCommand, } from "./commands/takeaway.js";
15
+ import { RunContext } from "./core/context.js";
16
+ import { CliError, exitCodeForError } from "./core/errors.js";
17
+ import { emitError, emitResult } from "./core/output.js";
18
+ const PROVIDER_OPTIONS = [
19
+ { flags: "--provider <id>", description: "AI provider: anthropic|openai|google|xai|mock" },
20
+ { flags: "--model <model>", description: "Model name (defaults per provider)" },
21
+ { flags: "--api-key <key>", description: "Provider API key for this run; - reads stdin" },
22
+ ];
23
+ const POST_INPUT_OPTIONS = [
24
+ { flags: "--text <text>", description: "Post text; @file reads a file, - reads stdin" },
25
+ { flags: "--url <url>", description: "Source URL of the post" },
26
+ { flags: "--id <externalId>", description: "External (X) post id, used for dedup" },
27
+ { flags: "--author <username>", description: "Author username" },
28
+ { flags: "--author-name <name>", description: "Author display name" },
29
+ { flags: "--posted-at <iso>", description: "Original post timestamp (ISO 8601)" },
30
+ { flags: "--post-id <id>", description: "Use an already-stored post by id" },
31
+ ];
32
+ function readVersion() {
33
+ try {
34
+ const raw = readFileSync(new URL("../package.json", import.meta.url), "utf8");
35
+ return JSON.parse(raw).version ?? "0.0.0";
36
+ }
37
+ catch {
38
+ return "0.0.0";
39
+ }
40
+ }
41
+ function cleanArgName(spec) {
42
+ return spec.replace(/[<>[\]]/g, "").replace(/\.\.\.$/, "");
43
+ }
44
+ function pathName(command) {
45
+ const parts = [];
46
+ let cursor = command;
47
+ while (cursor?.parent) {
48
+ parts.unshift(cursor.name());
49
+ cursor = cursor.parent;
50
+ }
51
+ return parts.join(" ");
52
+ }
53
+ function buildContext(opts) {
54
+ return new RunContext({
55
+ json: opts.json === true,
56
+ pretty: opts.pretty === true,
57
+ quiet: opts.quiet === true,
58
+ dbPath: typeof opts.db === "string" ? opts.db : undefined,
59
+ configDir: typeof opts.configDir === "string" ? opts.configDir : undefined,
60
+ });
61
+ }
62
+ async function execute(commandName, merged, handler) {
63
+ const ctx = buildContext(merged);
64
+ try {
65
+ const result = await handler(ctx, merged);
66
+ emitResult(commandName, result, ctx.mode);
67
+ }
68
+ catch (error) {
69
+ emitError(commandName, error, ctx.mode);
70
+ process.exitCode = exitCodeForError(error);
71
+ }
72
+ finally {
73
+ ctx.close();
74
+ }
75
+ }
76
+ /** Common output/storage flags attached to every command so they work in any position. */
77
+ function applyCommonOptions(cmd) {
78
+ cmd.option("--json", "Emit the JSON result envelope (default)");
79
+ cmd.option("--pretty", "Human-readable output instead of JSON");
80
+ cmd.option("--quiet", "Suppress progress logging on stderr");
81
+ cmd.option("--db <path>", "Path to the SQLite database file");
82
+ cmd.option("--config-dir <path>", "Directory for the managed config file");
83
+ }
84
+ function makeCommand(reg) {
85
+ const cmd = new Command(reg.name);
86
+ cmd.description(reg.description);
87
+ cmd.exitOverride();
88
+ for (const alias of reg.aliases ?? []) {
89
+ cmd.alias(alias);
90
+ }
91
+ for (const arg of reg.args ?? []) {
92
+ cmd.argument(arg.spec, arg.description ?? "");
93
+ }
94
+ for (const option of reg.options ?? []) {
95
+ cmd.option(option.flags, option.description);
96
+ }
97
+ for (const negation of reg.negations ?? []) {
98
+ cmd.option(negation.flags, negation.description);
99
+ }
100
+ applyCommonOptions(cmd);
101
+ const argCount = reg.args?.length ?? 0;
102
+ cmd.action(async (...callArgs) => {
103
+ const command = callArgs[callArgs.length - 1];
104
+ const positional = callArgs.slice(0, argCount);
105
+ const merged = { ...command.optsWithGlobals() };
106
+ (reg.args ?? []).forEach((arg, index) => {
107
+ const value = positional[index];
108
+ if (value !== undefined) {
109
+ merged[cleanArgName(arg.spec)] = value;
110
+ }
111
+ });
112
+ await execute(pathName(command), merged, reg.handler);
113
+ });
114
+ return cmd;
115
+ }
116
+ export function buildProgram() {
117
+ const program = new Command();
118
+ program
119
+ .name("tenbrains")
120
+ .description("Agent-first CLI for X research: analyze posts, track accounts, surface suggestions, and persist every outcome to a local SQLite database.")
121
+ .version(readVersion(), "-v, --version")
122
+ .exitOverride()
123
+ .configureOutput({ writeErr: () => { } });
124
+ applyCommonOptions(program);
125
+ // --- analyze --------------------------------------------------------------
126
+ const analyze = makeCommand({
127
+ name: "analyze",
128
+ description: "Analyze a post into topic, summary, intent, and 5 novel concepts.",
129
+ options: [
130
+ ...POST_INPUT_OPTIONS,
131
+ {
132
+ flags: "--thread [json]",
133
+ description: "Analyze a whole thread as one document: pass parts as JSON (@file/- ok), or bare with --url/--id to fetch the author's self-thread via the X API",
134
+ },
135
+ {
136
+ flags: "--fetch <mode>",
137
+ description: "With --url/--id and no --text: auto|oembed|api (default auto, free-first)",
138
+ },
139
+ {
140
+ flags: "--x-bearer <token>",
141
+ description: "X API Bearer token for --fetch api/fallback; - reads stdin",
142
+ },
143
+ ...PROVIDER_OPTIONS,
144
+ { flags: "--learn", description: "Also generate a 7-day Feynman learning track" },
145
+ { flags: "--ratings <json>", description: "Concept ratings JSON for --learn (@file/- ok)" },
146
+ { flags: "--minutes <n>", description: "Minutes per day for --learn (default 10)" },
147
+ ],
148
+ handler: analyzeCommand,
149
+ });
150
+ analyze.addCommand(makeCommand({
151
+ name: "list",
152
+ description: "List stored analyses (most recent first).",
153
+ options: [
154
+ { flags: "--limit <n>", description: "Max rows (default 20)" },
155
+ { flags: "--offset <n>", description: "Rows to skip (default 0)" },
156
+ { flags: "--author <username>", description: "Filter by author username" },
157
+ ],
158
+ handler: (ctx, opts) => analyzeListCommand(ctx, opts),
159
+ }));
160
+ analyze.addCommand(makeCommand({
161
+ name: "get",
162
+ description: "Show one analysis and its post by id.",
163
+ args: [{ spec: "<id>", description: "Analysis id (ana_...)" }],
164
+ handler: (ctx, opts) => analyzeGetCommand(ctx, opts),
165
+ }));
166
+ program.addCommand(analyze);
167
+ // --- takeaway -------------------------------------------------------------
168
+ const takeaway = makeCommand({
169
+ name: "takeaway",
170
+ description: "Track followed accounts and summarize their recent posts.",
171
+ handler: () => {
172
+ throw new CliError("USAGE", "Specify a subcommand: follow|unfollow|list|refresh|show.");
173
+ },
174
+ });
175
+ takeaway.addCommand(makeCommand({
176
+ name: "follow",
177
+ description: "Follow an account for takeaway tracking.",
178
+ args: [{ spec: "<username>", description: "X username (with or without @)" }],
179
+ options: [{ flags: "--name <name>", description: "Display name" }],
180
+ handler: takeawayFollowCommand,
181
+ }));
182
+ takeaway.addCommand(makeCommand({
183
+ name: "unfollow",
184
+ description: "Stop following an account (deletes its snapshots).",
185
+ args: [{ spec: "<username>" }],
186
+ handler: takeawayUnfollowCommand,
187
+ }));
188
+ takeaway.addCommand(makeCommand({
189
+ name: "list",
190
+ description: "List followed accounts and their latest takeaway.",
191
+ handler: takeawayListCommand,
192
+ }));
193
+ takeaway.addCommand(makeCommand({
194
+ name: "refresh",
195
+ description: "Summarize an account's recent posts into a new takeaway snapshot.",
196
+ args: [{ spec: "<username>" }],
197
+ options: [
198
+ {
199
+ flags: "--posts <json>",
200
+ description: "Recent posts [{text,externalId?,...}] (@file/- ok); omit to fetch from X",
201
+ },
202
+ {
203
+ flags: "--count <n>",
204
+ description: "Posts to fetch from X when --posts is omitted (default 20)",
205
+ },
206
+ {
207
+ flags: "--x-bearer <token>",
208
+ description: "X API Bearer token for timeline fetch; - reads stdin",
209
+ },
210
+ ...PROVIDER_OPTIONS,
211
+ ],
212
+ handler: takeawayRefreshCommand,
213
+ }));
214
+ takeaway.addCommand(makeCommand({
215
+ name: "show",
216
+ description: "Show the latest takeaway (or --history) for an account.",
217
+ args: [{ spec: "<username>" }],
218
+ options: [
219
+ { flags: "--history", description: "Show snapshot history instead of the latest" },
220
+ { flags: "--limit <n>", description: "Max history rows (default 20)" },
221
+ ],
222
+ handler: takeawayShowCommand,
223
+ }));
224
+ program.addCommand(takeaway);
225
+ // --- suggest --------------------------------------------------------------
226
+ const suggest = makeCommand({
227
+ name: "suggest",
228
+ description: "Rank un-saved posts against your saved signal; manage feedback.",
229
+ handler: () => {
230
+ throw new CliError("USAGE", "Specify a subcommand: generate|list|save|dismiss|add.");
231
+ },
232
+ });
233
+ suggest.addCommand(makeCommand({
234
+ name: "generate",
235
+ description: "Regenerate pending suggestions from the local corpus.",
236
+ options: [{ flags: "--limit <n>", description: "Max suggestions returned (default 10)" }],
237
+ handler: suggestGenerateCommand,
238
+ }));
239
+ suggest.addCommand(makeCommand({
240
+ name: "list",
241
+ description: "List suggestions by status (pending|saved|dismissed|all).",
242
+ options: [
243
+ { flags: "--status <status>", description: "Filter status (default pending)" },
244
+ { flags: "--limit <n>", description: "Max rows (default 10)" },
245
+ ],
246
+ handler: suggestListCommand,
247
+ }));
248
+ suggest.addCommand(makeCommand({
249
+ name: "save",
250
+ description: "Save a suggestion (materializes it as a bookmark).",
251
+ args: [{ spec: "<id>", description: "Suggestion id (sug_...)" }],
252
+ handler: suggestSaveCommand,
253
+ }));
254
+ suggest.addCommand(makeCommand({
255
+ name: "dismiss",
256
+ description: "Dismiss a suggestion (suppresses it in future ranking).",
257
+ args: [{ spec: "<id>" }],
258
+ handler: suggestDismissCommand,
259
+ }));
260
+ suggest.addCommand(makeCommand({
261
+ name: "add",
262
+ description: "Add a candidate post as a suggestion.",
263
+ options: [
264
+ { flags: "--post-id <id>", description: "Existing post id" },
265
+ { flags: "--text <text>", description: "New post text (@file/- ok)" },
266
+ { flags: "--url <url>", description: "Source URL" },
267
+ { flags: "--id <externalId>", description: "External post id" },
268
+ { flags: "--author <username>", description: "Author username" },
269
+ { flags: "--reason <reason>", description: "Why it's suggested" },
270
+ { flags: "--score <n>", description: "Initial score (default 1)" },
271
+ ],
272
+ handler: suggestAddCommand,
273
+ }));
274
+ program.addCommand(suggest);
275
+ // --- bookmark -------------------------------------------------------------
276
+ const bookmark = makeCommand({
277
+ name: "bookmark",
278
+ description: "Save posts with tags and notes.",
279
+ aliases: ["bm"],
280
+ handler: () => {
281
+ throw new CliError("USAGE", "Specify a subcommand: add|list|show|tag|remove.");
282
+ },
283
+ });
284
+ bookmark.addCommand(makeCommand({
285
+ name: "add",
286
+ description: "Bookmark a post (auto-tags from its analysis unless --tags given).",
287
+ options: [
288
+ ...POST_INPUT_OPTIONS,
289
+ { flags: "--tags <list>", description: "Comma-separated tags" },
290
+ { flags: "--note <note>", description: "Freeform note" },
291
+ { flags: "--source <source>", description: "Source label (default cli)" },
292
+ ],
293
+ negations: [{ flags: "--no-auto-tags", description: "Disable automatic tag suggestion" }],
294
+ handler: bookmarkAddCommand,
295
+ }));
296
+ bookmark.addCommand(makeCommand({
297
+ name: "list",
298
+ description: "List bookmarks, optionally filtered by --tag.",
299
+ options: [
300
+ { flags: "--tag <tag>", description: "Filter by a single tag" },
301
+ { flags: "--limit <n>", description: "Max rows (default 20)" },
302
+ { flags: "--offset <n>", description: "Rows to skip (default 0)" },
303
+ ],
304
+ handler: bookmarkListCommand,
305
+ }));
306
+ bookmark.addCommand(makeCommand({
307
+ name: "show",
308
+ description: "Show a bookmark with its post and analysis.",
309
+ args: [{ spec: "<id>", description: "Bookmark id (bm_...)" }],
310
+ handler: bookmarkShowCommand,
311
+ }));
312
+ bookmark.addCommand(makeCommand({
313
+ name: "tag",
314
+ description: "Add and/or remove tags on a bookmark.",
315
+ args: [{ spec: "<id>" }],
316
+ options: [
317
+ { flags: "--add <list>", description: "Comma-separated tags to add" },
318
+ { flags: "--remove <list>", description: "Comma-separated tags to remove" },
319
+ ],
320
+ handler: bookmarkTagCommand,
321
+ }));
322
+ bookmark.addCommand(makeCommand({
323
+ name: "remove",
324
+ description: "Delete a bookmark.",
325
+ aliases: ["rm"],
326
+ args: [{ spec: "<id>" }],
327
+ handler: bookmarkRemoveCommand,
328
+ }));
329
+ program.addCommand(bookmark);
330
+ // --- learn ----------------------------------------------------------------
331
+ const learn = makeCommand({
332
+ name: "learn",
333
+ description: "Generate and review 7-day Feynman learning tracks from an analysis.",
334
+ handler: () => {
335
+ throw new CliError("USAGE", "Specify a subcommand: generate|today|done|show|list.");
336
+ },
337
+ });
338
+ learn.addCommand(makeCommand({
339
+ name: "generate",
340
+ description: "Build a learning track from an analysis' concepts.",
341
+ options: [
342
+ { flags: "--analysis <id>", description: "Analysis id to build from" },
343
+ { flags: "--ratings <json>", description: "Concept ratings JSON (@file/- ok)" },
344
+ { flags: "--minutes <n>", description: "Minutes per day (default 10)" },
345
+ ],
346
+ handler: learnGenerateCommand,
347
+ }));
348
+ learn.addCommand(makeCommand({
349
+ name: "today",
350
+ description: "Show the next pending day's task (latest active track unless an id is given).",
351
+ args: [{ spec: "[id]", description: "Track id (trk_...); defaults to latest active track" }],
352
+ handler: learnTodayCommand,
353
+ }));
354
+ learn.addCommand(makeCommand({
355
+ name: "done",
356
+ description: "Mark a track day finished (defaults to the next pending day).",
357
+ args: [{ spec: "<id>", description: "Track id (trk_...)" }],
358
+ options: [
359
+ { flags: "--day <n>", description: "Specific day to mark (default: next pending)" },
360
+ { flags: "--notes <text>", description: "What you learned / what's still fuzzy" },
361
+ ],
362
+ handler: learnDoneCommand,
363
+ }));
364
+ learn.addCommand(makeCommand({
365
+ name: "show",
366
+ description: "Show a learning track by id.",
367
+ args: [{ spec: "<id>", description: "Track id (trk_...)" }],
368
+ handler: learnShowCommand,
369
+ }));
370
+ learn.addCommand(makeCommand({
371
+ name: "list",
372
+ description: "List learning tracks.",
373
+ options: [
374
+ { flags: "--analysis <id>", description: "Filter by analysis id" },
375
+ { flags: "--limit <n>", description: "Max rows (default 20)" },
376
+ ],
377
+ handler: learnListCommand,
378
+ }));
379
+ program.addCommand(learn);
380
+ // --- search ---------------------------------------------------------------
381
+ program.addCommand(makeCommand({
382
+ name: "search",
383
+ description: "Full-text search (FTS5, BM25-ranked) across analyses, takeaways, and bookmarks.",
384
+ args: [{ spec: "<query>", description: "Search query" }],
385
+ options: [
386
+ { flags: "--type <list>", description: "Limit types: analysis,takeaway,bookmark (or all)" },
387
+ { flags: "--limit <n>", description: "Max hits per type (default 10)" },
388
+ ],
389
+ handler: searchCommand,
390
+ }));
391
+ // --- digest ---------------------------------------------------------------
392
+ program.addCommand(makeCommand({
393
+ name: "digest",
394
+ description: "Markdown recap of analyses, takeaways, and bookmarks saved recently.",
395
+ options: [{ flags: "--days <n>", description: "Window in days (default 7)" }],
396
+ handler: digestCommand,
397
+ }));
398
+ // --- import ---------------------------------------------------------------
399
+ const importCmd = makeCommand({
400
+ name: "import",
401
+ description: "Bulk-import external data into the local database.",
402
+ handler: () => {
403
+ throw new CliError("USAGE", "Specify a subcommand: x-archive <path>.");
404
+ },
405
+ });
406
+ importCmd.addCommand(makeCommand({
407
+ name: "x-archive",
408
+ description: "Import an extracted official X account archive: likes become bookmarked posts, your tweets become posts.",
409
+ args: [{ spec: "<path>", description: "Extracted archive directory (contains data/)" }],
410
+ options: [
411
+ { flags: "--likes", description: "Import only likes" },
412
+ { flags: "--tweets", description: "Import only your tweets" },
413
+ { flags: "--limit <n>", description: "Cap items imported per kind (default: all)" },
414
+ ],
415
+ negations: [
416
+ { flags: "--no-bookmarks", description: "Store likes as posts without bookmarking them" },
417
+ ],
418
+ handler: importXArchiveCommand,
419
+ }));
420
+ program.addCommand(importCmd);
421
+ // --- config + setup -------------------------------------------------------
422
+ program.addCommand(makeCommand({
423
+ name: "setup",
424
+ description: "Collect and store AI provider + optional X credentials (interactive or via flags).",
425
+ options: [
426
+ { flags: "--provider <id>", description: "Provider to configure (default anthropic)" },
427
+ { flags: "--api-key <key>", description: "API key; - reads stdin" },
428
+ { flags: "--model <model>", description: "Default model for this provider" },
429
+ { flags: "--default", description: "Make this the default provider" },
430
+ { flags: "--x-bearer <token>", description: "X API Bearer token to store; - reads stdin" },
431
+ ],
432
+ handler: setupCommand,
433
+ }));
434
+ const config = makeCommand({
435
+ name: "config",
436
+ description: "Read and write the managed CLI config (default provider, keys, models).",
437
+ handler: () => {
438
+ throw new CliError("USAGE", "Specify a subcommand: set|get|list|unset|path.");
439
+ },
440
+ });
441
+ config.addCommand(makeCommand({
442
+ name: "set",
443
+ description: "Set a config value by dot-path (value may be @file or -).",
444
+ args: [{ spec: "<key>" }, { spec: "<value>" }],
445
+ handler: configSetCommand,
446
+ }));
447
+ config.addCommand(makeCommand({
448
+ name: "get",
449
+ description: "Get a config value (secrets redacted unless --reveal).",
450
+ args: [{ spec: "<key>" }],
451
+ options: [{ flags: "--reveal", description: "Show secret values" }],
452
+ handler: configGetCommand,
453
+ }));
454
+ config.addCommand(makeCommand({
455
+ name: "list",
456
+ description: "List all config values (secrets redacted unless --reveal).",
457
+ options: [{ flags: "--reveal", description: "Show secret values" }],
458
+ handler: configListCommand,
459
+ }));
460
+ config.addCommand(makeCommand({
461
+ name: "unset",
462
+ description: "Remove a config value by dot-path.",
463
+ args: [{ spec: "<key>" }],
464
+ handler: configUnsetCommand,
465
+ }));
466
+ config.addCommand(makeCommand({
467
+ name: "path",
468
+ description: "Print the config file and database paths.",
469
+ handler: configPathCommand,
470
+ }));
471
+ program.addCommand(config);
472
+ // --- record ---------------------------------------------------------------
473
+ const record = makeCommand({
474
+ name: "record",
475
+ description: "Resolve any stored record by its prefixed id.",
476
+ handler: () => {
477
+ throw new CliError("USAGE", "Specify a subcommand: get <id>.");
478
+ },
479
+ });
480
+ record.addCommand(makeCommand({
481
+ name: "get",
482
+ description: "Fetch any record by id (post_/ana_/acc_/snap_/bm_/sug_/trk_).",
483
+ args: [{ spec: "<id>" }],
484
+ handler: recordGetCommand,
485
+ }));
486
+ program.addCommand(record);
487
+ // --- db -------------------------------------------------------------------
488
+ const db = makeCommand({
489
+ name: "db",
490
+ description: "Inspect and maintain the local database.",
491
+ handler: () => {
492
+ throw new CliError("USAGE", "Specify a subcommand: stats|migrate|vacuum|reindex|reset.");
493
+ },
494
+ });
495
+ db.addCommand(makeCommand({
496
+ name: "stats",
497
+ description: "Show row counts and schema version.",
498
+ handler: dbStatsCommand,
499
+ }));
500
+ db.addCommand(makeCommand({
501
+ name: "migrate",
502
+ description: "Apply pending schema migrations.",
503
+ handler: dbMigrateCommand,
504
+ }));
505
+ db.addCommand(makeCommand({
506
+ name: "vacuum",
507
+ description: "Compact the database file.",
508
+ handler: dbVacuumCommand,
509
+ }));
510
+ db.addCommand(makeCommand({
511
+ name: "reindex",
512
+ description: "Rebuild the full-text search index from the source tables.",
513
+ handler: dbReindexCommand,
514
+ }));
515
+ db.addCommand(makeCommand({
516
+ name: "reset",
517
+ description: "Delete all stored data and recreate the schema.",
518
+ options: [{ flags: "--yes", description: "Confirm destructive reset" }],
519
+ handler: dbResetCommand,
520
+ }));
521
+ program.addCommand(db);
522
+ // --- manifest -------------------------------------------------------------
523
+ program.addCommand(makeCommand({
524
+ name: "manifest",
525
+ description: "Emit a machine-readable description of the whole CLI for agents.",
526
+ handler: manifestCommand(program),
527
+ }));
528
+ return program;
529
+ }
530
+ export async function run(argv) {
531
+ const program = buildProgram();
532
+ if (argv.slice(2).length === 0) {
533
+ program.outputHelp();
534
+ return;
535
+ }
536
+ try {
537
+ await program.parseAsync(argv);
538
+ }
539
+ catch (error) {
540
+ if (error instanceof CommanderError) {
541
+ if (error.code === "commander.helpDisplayed" ||
542
+ error.code === "commander.help" ||
543
+ error.code === "commander.version") {
544
+ return;
545
+ }
546
+ emitError("cli", new CliError("USAGE", error.message.replace(/^error:\s*/i, "")), "json");
547
+ process.exitCode = 2;
548
+ return;
549
+ }
550
+ emitError("cli", error, "json");
551
+ process.exitCode = exitCodeForError(error);
552
+ }
553
+ }
554
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { RunContext } from "../core/context.js";
2
+ import { type Opts } from "../core/opts.js";
3
+ import type { CommandResult } from "../core/output.js";
4
+ export declare function analyzeCommand(ctx: RunContext, opts: Opts): Promise<CommandResult>;
5
+ export declare function analyzeListCommand(ctx: RunContext, opts: Opts): CommandResult;
6
+ export declare function analyzeGetCommand(ctx: RunContext, opts: Opts): CommandResult;
7
+ //# sourceMappingURL=analyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,KAAK,IAAI,EAAgD,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAyBvD,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CA+JxF;AAiBD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,aAAa,CAS7E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,aAAa,CAY5E"}