opencode-agora 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +86 -255
  2. package/dist/atomic-write.d.ts +10 -0
  3. package/dist/atomic-write.d.ts.map +1 -0
  4. package/dist/atomic-write.js +23 -0
  5. package/dist/atomic-write.js.map +1 -0
  6. package/dist/auth/refresh.d.ts +17 -0
  7. package/dist/auth/refresh.d.ts.map +1 -0
  8. package/dist/auth/refresh.js +50 -0
  9. package/dist/auth/refresh.js.map +1 -0
  10. package/dist/cli/app.d.ts +13 -18
  11. package/dist/cli/app.d.ts.map +1 -1
  12. package/dist/cli/app.js +184 -1187
  13. package/dist/cli/app.js.map +1 -1
  14. package/dist/cli/chat-renderer.d.ts +31 -0
  15. package/dist/cli/chat-renderer.d.ts.map +1 -0
  16. package/dist/cli/chat-renderer.js +275 -0
  17. package/dist/cli/chat-renderer.js.map +1 -0
  18. package/dist/cli/commands/browse.d.ts +4 -0
  19. package/dist/cli/commands/browse.d.ts.map +1 -0
  20. package/dist/cli/commands/browse.js +80 -0
  21. package/dist/cli/commands/browse.js.map +1 -0
  22. package/dist/cli/commands/chat.d.ts +4 -0
  23. package/dist/cli/commands/chat.d.ts.map +1 -0
  24. package/dist/cli/commands/chat.js +125 -0
  25. package/dist/cli/commands/chat.js.map +1 -0
  26. package/dist/cli/commands/community.d.ts +12 -0
  27. package/dist/cli/commands/community.d.ts.map +1 -0
  28. package/dist/cli/commands/community.js +453 -0
  29. package/dist/cli/commands/community.js.map +1 -0
  30. package/dist/cli/commands/export.d.ts +3 -0
  31. package/dist/cli/commands/export.d.ts.map +1 -0
  32. package/dist/cli/commands/export.js +108 -0
  33. package/dist/cli/commands/export.js.map +1 -0
  34. package/dist/cli/commands/init.d.ts +4 -0
  35. package/dist/cli/commands/init.d.ts.map +1 -0
  36. package/dist/cli/commands/init.js +299 -0
  37. package/dist/cli/commands/init.js.map +1 -0
  38. package/dist/cli/commands/learn.d.ts +4 -0
  39. package/dist/cli/commands/learn.d.ts.map +1 -0
  40. package/dist/cli/commands/learn.js +62 -0
  41. package/dist/cli/commands/learn.js.map +1 -0
  42. package/dist/cli/commands/marketplace.d.ts +9 -0
  43. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  44. package/dist/cli/commands/marketplace.js +321 -0
  45. package/dist/cli/commands/marketplace.js.map +1 -0
  46. package/dist/cli/commands/notify.d.ts +3 -0
  47. package/dist/cli/commands/notify.d.ts.map +1 -0
  48. package/dist/cli/commands/notify.js +59 -0
  49. package/dist/cli/commands/notify.js.map +1 -0
  50. package/dist/cli/commands/operations.d.ts +16 -0
  51. package/dist/cli/commands/operations.d.ts.map +1 -0
  52. package/dist/cli/commands/operations.js +1006 -0
  53. package/dist/cli/commands/operations.js.map +1 -0
  54. package/dist/cli/commands/ping.d.ts +3 -0
  55. package/dist/cli/commands/ping.d.ts.map +1 -0
  56. package/dist/cli/commands/ping.js +56 -0
  57. package/dist/cli/commands/ping.js.map +1 -0
  58. package/dist/cli/commands/today.d.ts +3 -0
  59. package/dist/cli/commands/today.d.ts.map +1 -0
  60. package/dist/cli/commands/today.js +142 -0
  61. package/dist/cli/commands/today.js.map +1 -0
  62. package/dist/cli/commands/types.d.ts +5 -0
  63. package/dist/cli/commands/types.d.ts.map +1 -0
  64. package/dist/cli/commands/types.js +2 -0
  65. package/dist/cli/commands/types.js.map +1 -0
  66. package/dist/cli/commands/watch.d.ts +3 -0
  67. package/dist/cli/commands/watch.d.ts.map +1 -0
  68. package/dist/cli/commands/watch.js +41 -0
  69. package/dist/cli/commands/watch.js.map +1 -0
  70. package/dist/cli/commands/welcome.d.ts +3 -0
  71. package/dist/cli/commands/welcome.d.ts.map +1 -0
  72. package/dist/cli/commands/welcome.js +97 -0
  73. package/dist/cli/commands/welcome.js.map +1 -0
  74. package/dist/cli/commands-meta.d.ts +21 -0
  75. package/dist/cli/commands-meta.d.ts.map +1 -0
  76. package/dist/cli/commands-meta.js +828 -0
  77. package/dist/cli/commands-meta.js.map +1 -0
  78. package/dist/cli/completions-gen.d.ts +2 -0
  79. package/dist/cli/completions-gen.d.ts.map +1 -0
  80. package/dist/cli/completions-gen.js +195 -0
  81. package/dist/cli/completions-gen.js.map +1 -0
  82. package/dist/cli/completions.d.ts +18 -0
  83. package/dist/cli/completions.d.ts.map +1 -0
  84. package/dist/cli/completions.js +227 -0
  85. package/dist/cli/completions.js.map +1 -0
  86. package/dist/cli/flags.d.ts +19 -0
  87. package/dist/cli/flags.d.ts.map +1 -0
  88. package/dist/cli/flags.js +91 -0
  89. package/dist/cli/flags.js.map +1 -0
  90. package/dist/cli/format.d.ts +19 -0
  91. package/dist/cli/format.d.ts.map +1 -0
  92. package/dist/cli/format.js +249 -0
  93. package/dist/cli/format.js.map +1 -0
  94. package/dist/cli/helpers.d.ts +95 -0
  95. package/dist/cli/helpers.d.ts.map +1 -0
  96. package/dist/cli/helpers.js +301 -0
  97. package/dist/cli/helpers.js.map +1 -0
  98. package/dist/cli/mcp-server.d.ts +4 -0
  99. package/dist/cli/mcp-server.d.ts.map +1 -0
  100. package/dist/cli/mcp-server.js +277 -0
  101. package/dist/cli/mcp-server.js.map +1 -0
  102. package/dist/cli/menu.d.ts +7 -0
  103. package/dist/cli/menu.d.ts.map +1 -0
  104. package/dist/cli/menu.js +172 -0
  105. package/dist/cli/menu.js.map +1 -0
  106. package/dist/cli/pages/community.d.ts +9 -0
  107. package/dist/cli/pages/community.d.ts.map +1 -0
  108. package/dist/cli/pages/community.js +1094 -0
  109. package/dist/cli/pages/community.js.map +1 -0
  110. package/dist/cli/pages/helpers.d.ts +37 -0
  111. package/dist/cli/pages/helpers.d.ts.map +1 -0
  112. package/dist/cli/pages/helpers.js +98 -0
  113. package/dist/cli/pages/helpers.js.map +1 -0
  114. package/dist/cli/pages/home.d.ts +4 -0
  115. package/dist/cli/pages/home.d.ts.map +1 -0
  116. package/dist/cli/pages/home.js +231 -0
  117. package/dist/cli/pages/home.js.map +1 -0
  118. package/dist/cli/pages/marketplace.d.ts +5 -0
  119. package/dist/cli/pages/marketplace.d.ts.map +1 -0
  120. package/dist/cli/pages/marketplace.js +583 -0
  121. package/dist/cli/pages/marketplace.js.map +1 -0
  122. package/dist/cli/pages/news.d.ts +31 -0
  123. package/dist/cli/pages/news.d.ts.map +1 -0
  124. package/dist/cli/pages/news.js +688 -0
  125. package/dist/cli/pages/news.js.map +1 -0
  126. package/dist/cli/pages/settings.d.ts +3 -0
  127. package/dist/cli/pages/settings.d.ts.map +1 -0
  128. package/dist/cli/pages/settings.js +296 -0
  129. package/dist/cli/pages/settings.js.map +1 -0
  130. package/dist/cli/pages/types.d.ts +67 -0
  131. package/dist/cli/pages/types.d.ts.map +1 -0
  132. package/dist/cli/pages/types.js +2 -0
  133. package/dist/cli/pages/types.js.map +1 -0
  134. package/dist/cli/prompter.d.ts +135 -0
  135. package/dist/cli/prompter.d.ts.map +1 -0
  136. package/dist/cli/prompter.js +710 -0
  137. package/dist/cli/prompter.js.map +1 -0
  138. package/dist/cli/shell.d.ts +23 -0
  139. package/dist/cli/shell.d.ts.map +1 -0
  140. package/dist/cli/shell.js +1106 -0
  141. package/dist/cli/shell.js.map +1 -0
  142. package/dist/cli/tui.d.ts +7 -0
  143. package/dist/cli/tui.d.ts.map +1 -0
  144. package/dist/cli/tui.js +419 -0
  145. package/dist/cli/tui.js.map +1 -0
  146. package/dist/cli.js +1 -1
  147. package/dist/cli.js.map +1 -1
  148. package/dist/commands.d.ts +14 -0
  149. package/dist/commands.d.ts.map +1 -0
  150. package/dist/commands.js +28 -0
  151. package/dist/commands.js.map +1 -0
  152. package/dist/community/client.d.ts +84 -0
  153. package/dist/community/client.d.ts.map +1 -0
  154. package/dist/community/client.js +340 -0
  155. package/dist/community/client.js.map +1 -0
  156. package/dist/community/search.d.ts +25 -0
  157. package/dist/community/search.d.ts.map +1 -0
  158. package/dist/community/search.js +62 -0
  159. package/dist/community/search.js.map +1 -0
  160. package/dist/community/types.d.ts +71 -0
  161. package/dist/community/types.d.ts.map +1 -0
  162. package/dist/community/types.js +11 -0
  163. package/dist/community/types.js.map +1 -0
  164. package/dist/config.d.ts +1 -7
  165. package/dist/config.d.ts.map +1 -1
  166. package/dist/config.js +0 -32
  167. package/dist/config.js.map +1 -1
  168. package/dist/data.d.ts +1 -1
  169. package/dist/data.d.ts.map +1 -1
  170. package/dist/data.js +778 -40
  171. package/dist/data.js.map +1 -1
  172. package/dist/format.d.ts +5 -39
  173. package/dist/format.d.ts.map +1 -1
  174. package/dist/format.js +5 -120
  175. package/dist/format.js.map +1 -1
  176. package/dist/history.d.ts +13 -0
  177. package/dist/history.d.ts.map +1 -0
  178. package/dist/history.js +37 -0
  179. package/dist/history.js.map +1 -0
  180. package/dist/hubs/cache.d.ts +6 -0
  181. package/dist/hubs/cache.d.ts.map +1 -0
  182. package/dist/hubs/cache.js +46 -0
  183. package/dist/hubs/cache.js.map +1 -0
  184. package/dist/hubs/enrichment.d.ts +43 -0
  185. package/dist/hubs/enrichment.d.ts.map +1 -0
  186. package/dist/hubs/enrichment.js +239 -0
  187. package/dist/hubs/enrichment.js.map +1 -0
  188. package/dist/hubs/github.d.ts +12 -0
  189. package/dist/hubs/github.d.ts.map +1 -0
  190. package/dist/hubs/github.js +54 -0
  191. package/dist/hubs/github.js.map +1 -0
  192. package/dist/hubs/huggingface.d.ts +27 -0
  193. package/dist/hubs/huggingface.d.ts.map +1 -0
  194. package/dist/hubs/huggingface.js +88 -0
  195. package/dist/hubs/huggingface.js.map +1 -0
  196. package/dist/hubs/quality.d.ts +26 -0
  197. package/dist/hubs/quality.d.ts.map +1 -0
  198. package/dist/hubs/quality.js +57 -0
  199. package/dist/hubs/quality.js.map +1 -0
  200. package/dist/hubs/types.d.ts +30 -0
  201. package/dist/hubs/types.d.ts.map +1 -0
  202. package/dist/hubs/types.js +2 -0
  203. package/dist/hubs/types.js.map +1 -0
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +188 -224
  206. package/dist/index.js.map +1 -1
  207. package/dist/init.d.ts.map +1 -1
  208. package/dist/init.js +6 -11
  209. package/dist/init.js.map +1 -1
  210. package/dist/live.d.ts +14 -0
  211. package/dist/live.d.ts.map +1 -1
  212. package/dist/live.js +35 -3
  213. package/dist/live.js.map +1 -1
  214. package/dist/marketplace.d.ts +25 -3
  215. package/dist/marketplace.d.ts.map +1 -1
  216. package/dist/marketplace.js +279 -22
  217. package/dist/marketplace.js.map +1 -1
  218. package/dist/news/cache.d.ts +13 -0
  219. package/dist/news/cache.d.ts.map +1 -0
  220. package/dist/news/cache.js +66 -0
  221. package/dist/news/cache.js.map +1 -0
  222. package/dist/news/score.d.ts +4 -0
  223. package/dist/news/score.d.ts.map +1 -0
  224. package/dist/news/score.js +43 -0
  225. package/dist/news/score.js.map +1 -0
  226. package/dist/news/sources/arxiv.d.ts +9 -0
  227. package/dist/news/sources/arxiv.d.ts.map +1 -0
  228. package/dist/news/sources/arxiv.js +107 -0
  229. package/dist/news/sources/arxiv.js.map +1 -0
  230. package/dist/news/sources/github-trending.d.ts +9 -0
  231. package/dist/news/sources/github-trending.d.ts.map +1 -0
  232. package/dist/news/sources/github-trending.js +97 -0
  233. package/dist/news/sources/github-trending.js.map +1 -0
  234. package/dist/news/sources/hn.d.ts +9 -0
  235. package/dist/news/sources/hn.d.ts.map +1 -0
  236. package/dist/news/sources/hn.js +57 -0
  237. package/dist/news/sources/hn.js.map +1 -0
  238. package/dist/news/sources/reddit.d.ts +9 -0
  239. package/dist/news/sources/reddit.d.ts.map +1 -0
  240. package/dist/news/sources/reddit.js +69 -0
  241. package/dist/news/sources/reddit.js.map +1 -0
  242. package/dist/news/sources/rss.d.ts +13 -0
  243. package/dist/news/sources/rss.d.ts.map +1 -0
  244. package/dist/news/sources/rss.js +14 -0
  245. package/dist/news/sources/rss.js.map +1 -0
  246. package/dist/news/types.d.ts +42 -0
  247. package/dist/news/types.d.ts.map +1 -0
  248. package/dist/news/types.js +56 -0
  249. package/dist/news/types.js.map +1 -0
  250. package/dist/preferences.d.ts +14 -0
  251. package/dist/preferences.d.ts.map +1 -0
  252. package/dist/preferences.js +31 -0
  253. package/dist/preferences.js.map +1 -0
  254. package/dist/settings.d.ts +26 -0
  255. package/dist/settings.d.ts.map +1 -0
  256. package/dist/settings.js +251 -0
  257. package/dist/settings.js.map +1 -0
  258. package/dist/state.d.ts +9 -2
  259. package/dist/state.d.ts.map +1 -1
  260. package/dist/state.js +41 -19
  261. package/dist/state.js.map +1 -1
  262. package/dist/transcript.d.ts +28 -0
  263. package/dist/transcript.d.ts.map +1 -0
  264. package/dist/transcript.js +79 -0
  265. package/dist/transcript.js.map +1 -0
  266. package/dist/types.d.ts +19 -1
  267. package/dist/types.d.ts.map +1 -1
  268. package/dist/ui.d.ts +157 -0
  269. package/dist/ui.d.ts.map +1 -0
  270. package/dist/ui.js +296 -0
  271. package/dist/ui.js.map +1 -0
  272. package/package.json +11 -9
  273. package/dist/api.d.ts +0 -72
  274. package/dist/api.d.ts.map +0 -1
  275. package/dist/api.js +0 -109
  276. package/dist/api.js.map +0 -1
  277. package/dist/logger.d.ts +0 -20
  278. package/dist/logger.d.ts.map +0 -1
  279. package/dist/logger.js +0 -59
  280. package/dist/logger.js.map +0 -1
@@ -0,0 +1,125 @@
1
+ import process from 'node:process';
2
+ import { spawn } from 'node:child_process';
3
+ import { appendHistory } from '../../history.js';
4
+ import { stringFlag, writeLine, detectDataDir, loadLastChatSession, extractSessionId, persistChatSession } from '../helpers.js';
5
+ export const FREE_MODELS = ['deepseek-v4-flash-free', 'minimax-m2.5-free', 'nemotron-3-super-free'];
6
+ export const commandChat = async (parsed, io, _style) => {
7
+ const message = parsed.args.join(' ');
8
+ const model = stringFlag(parsed, 'model', 'm') || FREE_MODELS[0];
9
+ const continueMode = parsed.flags.continue === true;
10
+ const explicitSession = stringFlag(parsed, 'session', 's');
11
+ const rawJson = parsed.flags.json === true;
12
+ const modelArg = model.includes('/') ? model : `opencode/${model}`;
13
+ if (!message) {
14
+ // TUI mode — hand off to opencode with inherit stdio
15
+ process.stderr.write(`Agora Chat (${model}) — press Ctrl+C to exit.\n`);
16
+ const child = spawn('opencode', ['--model', modelArg], {
17
+ env: io.env,
18
+ stdio: 'inherit',
19
+ shell: false
20
+ });
21
+ return new Promise((resolve) => {
22
+ child.on('close', (code) => resolve(code ?? 0));
23
+ child.on('error', (err) => {
24
+ writeLine(io.stderr, `Failed to run opencode: ${err.message}`);
25
+ resolve(1);
26
+ });
27
+ });
28
+ }
29
+ // One-shot mode — single message via opencode run
30
+ return new Promise((resolve) => {
31
+ const args = ['run', '--format', 'json'];
32
+ args.push('--model', modelArg);
33
+ if (explicitSession) {
34
+ args.push('--session', explicitSession);
35
+ }
36
+ else if (continueMode) {
37
+ const dataDir = detectDataDir(parsed, io);
38
+ const lastSession = loadLastChatSession(dataDir);
39
+ if (lastSession) {
40
+ args.push('--session', lastSession);
41
+ }
42
+ else {
43
+ args.push('--continue');
44
+ }
45
+ }
46
+ args.push(message);
47
+ const stderrChunks = [];
48
+ let sessionId = null;
49
+ let wroteNewline = false;
50
+ const child = spawn('opencode', args, {
51
+ env: io.env,
52
+ stdio: ['ignore', 'pipe', 'pipe'],
53
+ shell: false
54
+ });
55
+ child.stdout?.on('data', (chunk) => {
56
+ const text = chunk.toString();
57
+ for (const line of text.split('\n').filter(Boolean)) {
58
+ if (!sessionId)
59
+ sessionId = extractSessionId(line);
60
+ if (rawJson) {
61
+ process.stdout.write(line + '\n');
62
+ continue;
63
+ }
64
+ try {
65
+ const ev = JSON.parse(line);
66
+ if (ev.type === 'text' && ev.part?.text) {
67
+ process.stdout.write(ev.part.text);
68
+ wroteNewline = false;
69
+ }
70
+ if (ev.type === 'step_finish') {
71
+ const tokens = ev.part?.tokens;
72
+ if (tokens && !rawJson) {
73
+ const cost = typeof tokens.cost === 'number' ? ` · $${tokens.cost.toFixed(6)}` : '';
74
+ process.stdout.write(`\n\x1b[2m[${tokens.output} tokens${cost}]\x1b[0m\n`);
75
+ wroteNewline = true;
76
+ }
77
+ }
78
+ }
79
+ catch {
80
+ /* skip malformed lines */
81
+ }
82
+ }
83
+ });
84
+ child.stderr?.on('data', (chunk) => {
85
+ stderrChunks.push(chunk.toString());
86
+ });
87
+ child.on('close', (code) => {
88
+ if (!wroteNewline)
89
+ process.stdout.write('\n');
90
+ const dataDir = detectDataDir(parsed, io);
91
+ appendHistory(dataDir, {
92
+ type: 'chat',
93
+ query: message,
94
+ timestamp: new Date().toISOString(),
95
+ model
96
+ });
97
+ if (sessionId) {
98
+ persistChatSession(dataDir, sessionId);
99
+ if (!rawJson) {
100
+ process.stdout.write(`\x1b[2mSession: ${sessionId.slice(0, 24)}… `);
101
+ process.stdout.write(`Continue: agora chat --session ${sessionId} "..."\x1b[0m\n`);
102
+ }
103
+ }
104
+ if (code !== 0) {
105
+ const errText = stderrChunks.join('');
106
+ const modelError = errText.match(/Model not found:.*?Did you mean:\s*(.+?)\?/);
107
+ if (modelError) {
108
+ const suggestions = modelError[1];
109
+ writeLine(io.stderr, `\nModel not available. Try: ${suggestions}`);
110
+ writeLine(io.stderr, `Example: agora chat -m deepseek-v4-flash-free "your question"`);
111
+ }
112
+ else if (errText.includes('not found')) {
113
+ writeLine(io.stderr, '\n' + errText.replace(/^.*?ERROR\s+/gm, '').trim());
114
+ }
115
+ }
116
+ resolve(code ?? 0);
117
+ });
118
+ child.on('error', (err) => {
119
+ writeLine(io.stderr, `Failed to run opencode: ${err.message}`);
120
+ writeLine(io.stderr, 'Is opencode installed and in your PATH?');
121
+ resolve(1);
122
+ });
123
+ });
124
+ };
125
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const commandNews: CommandHandler;
3
+ export declare const commandCommunity: CommandHandler;
4
+ export declare const commandThread: CommandHandler;
5
+ export declare const commandPost: CommandHandler;
6
+ export declare const commandReply: CommandHandler;
7
+ export declare const commandVote: CommandHandler;
8
+ export declare const commandFlag: CommandHandler;
9
+ export declare const commandDiscussions: CommandHandler;
10
+ export declare const commandDiscuss: CommandHandler;
11
+ export declare const commandAdmin: CommandHandler;
12
+ //# sourceMappingURL=community.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/community.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,WAAW,EAAE,cAmHzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cA+D9B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAoC3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,cAsBzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAuB1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,cAuBzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,cAmEzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAsChC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cA2B5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAsH1B,CAAC"}
@@ -0,0 +1,453 @@
1
+ import { BOARD_IDS } from '../../community/types.js';
2
+ import { communityBoardsSource, communityThreadsSource, communityThreadSource, createThreadSource, createReplySource, voteSource, flagSource, adminHideSource, adminLogSource, adminRecomputeSource } from '../../community/client.js';
3
+ import { createDiscussionSource, discussionsSource, flagMarketplaceSource } from '../../live.js';
4
+ import { normalizeNewsSource, DEFAULT_NEWS_CONFIG, hostFromUrl } from '../../news/types.js';
5
+ import { rankItems } from '../../news/score.js';
6
+ import { readCache, writeCache, isStale } from '../../news/cache.js';
7
+ import { hnSource } from '../../news/sources/hn.js';
8
+ import { redditSource } from '../../news/sources/reddit.js';
9
+ import { githubTrendingSource } from '../../news/sources/github-trending.js';
10
+ import { arxivSource } from '../../news/sources/arxiv.js';
11
+ import { formatNumber } from '../../format.js';
12
+ import { stringFlag, requiredStringFlag, numberFlag, sourceOptions, writeSourceOptions, sourceLabel, warnFallback, sourcePayload, writeLine, writeJson, usageError, detectDataDir, contentInput, discussionCategoryFlag } from '../helpers.js';
13
+ import { header, truncate } from '../format.js';
14
+ export const commandNews = async (parsed, io, style) => {
15
+ const query = parsed.args.join(' ');
16
+ const sourceOpt = stringFlag(parsed, 'source', 's');
17
+ const source = sourceOpt ? normalizeNewsSource(sourceOpt) : undefined;
18
+ const limit = numberFlag(parsed, 'limit', 'n') || 20;
19
+ const refresh = Boolean(parsed.flags.refresh);
20
+ const dataDir = detectDataDir(parsed, io);
21
+ let cached = readCache(dataDir);
22
+ const now = new Date();
23
+ const config = DEFAULT_NEWS_CONFIG;
24
+ const adapters = [
25
+ ['hn', hnSource],
26
+ ['reddit', redditSource],
27
+ ['github-trending', githubTrendingSource],
28
+ ['arxiv', arxivSource]
29
+ ];
30
+ const fetchWithTimeout = (fn, ms = 10000) => {
31
+ const controller = new AbortController();
32
+ let timer;
33
+ return new Promise((resolve, reject) => {
34
+ timer = setTimeout(() => {
35
+ controller.abort();
36
+ reject(new Error('timeout'));
37
+ }, ms);
38
+ fn(controller.signal).then((val) => {
39
+ clearTimeout(timer);
40
+ resolve(val);
41
+ }, (err) => {
42
+ clearTimeout(timer);
43
+ reject(err);
44
+ });
45
+ });
46
+ };
47
+ const refreshSource = async (src, adapter) => {
48
+ try {
49
+ const fresh = await fetchWithTimeout((signal) => adapter.fetch({ signal }));
50
+ cached = cached.filter((i) => i.source !== src);
51
+ cached.push(...fresh);
52
+ }
53
+ catch {
54
+ // keep stale
55
+ }
56
+ };
57
+ if (refresh) {
58
+ for (const [src, adapter] of adapters) {
59
+ await refreshSource(src, adapter);
60
+ }
61
+ }
62
+ else {
63
+ for (const [src, adapter] of adapters) {
64
+ const cfg = config.sources[src];
65
+ if (cfg?.enabled && isStale(cached, src, cfg.ttlMinutes, now)) {
66
+ await refreshSource(src, adapter);
67
+ }
68
+ }
69
+ }
70
+ const ranked = rankItems(cached, config, now);
71
+ writeCache(dataDir, cached);
72
+ let items = ranked;
73
+ if (query) {
74
+ const q = query.toLowerCase();
75
+ items = items.filter((i) => i.title.toLowerCase().includes(q) || i.tags.some((t) => t.includes(q)));
76
+ }
77
+ if (source) {
78
+ items = items.filter((i) => i.source === source);
79
+ }
80
+ items = items.slice(0, limit);
81
+ if (parsed.flags.json) {
82
+ writeJson(io.stdout, { count: items.length, items, source: source || 'all' });
83
+ return 0;
84
+ }
85
+ if (items.length === 0) {
86
+ writeLine(io.stdout, 'No news items found.');
87
+ return 0;
88
+ }
89
+ writeLine(io.stdout, header('agora news', [`${items.length} stories`, source ? `source: ${source}` : 'all sources'], style));
90
+ writeLine(io.stdout, '');
91
+ for (const item of items) {
92
+ const ageH = Math.round((now.getTime() - new Date(item.publishedAt).getTime()) / 3600000);
93
+ const age = ageH < 1 ? '<1h' : ageH < 24 ? `${ageH}h` : `${Math.round(ageH / 24)}d`;
94
+ const host = hostFromUrl(item.url);
95
+ writeLine(io.stdout, `${style.accent(item.source.padEnd(6))} ${style.dim(age.padEnd(4))} ${style.accent(formatNumber(item.engagement).padStart(7))} ${style.dim('s' + item.score.toFixed(2))} ${item.title}`);
96
+ if (host)
97
+ writeLine(io.stdout, ` ${style.dim(host)}`);
98
+ if (query)
99
+ writeLine(io.stdout, '');
100
+ }
101
+ return 0;
102
+ };
103
+ export const commandCommunity = async (parsed, io, style) => {
104
+ const boardArg = parsed.args[0];
105
+ if (boardArg !== undefined && !BOARD_IDS.includes(boardArg)) {
106
+ return usageError(io, `Unknown board "${boardArg}". Valid: ${BOARD_IDS.join(', ')}`);
107
+ }
108
+ const board = boardArg;
109
+ const sortRaw = stringFlag(parsed, 'sort') || 'active';
110
+ if (!['top', 'new', 'active'].includes(sortRaw)) {
111
+ return usageError(io, `Unknown sort "${sortRaw}". Valid: top, new, active`);
112
+ }
113
+ const sort = sortRaw;
114
+ const opts = await sourceOptions(parsed, io);
115
+ if (board) {
116
+ const result = await communityThreadsSource(opts, board, sort);
117
+ const threads = result.data.threads;
118
+ if (parsed.flags.json) {
119
+ writeJson(io.stdout, { board, sort, count: threads.length, threads });
120
+ return 0;
121
+ }
122
+ if (threads.length === 0) {
123
+ writeLine(io.stdout, `No threads in /${board}.`);
124
+ return 0;
125
+ }
126
+ writeLine(io.stdout, header(`agora community /${board}`, [`${threads.length} threads`, `sort: ${sort}`], style));
127
+ writeLine(io.stdout, '');
128
+ for (const t of threads) {
129
+ const ageH = Math.round((Date.now() - new Date(t.createdAt).getTime()) / 3600000);
130
+ writeLine(io.stdout, ` ${style.accent(t.title)}`);
131
+ writeLine(io.stdout, ` ${style.dim(t.author + ' \u00b7 ' + ageH + 'h \u00b7 ' + t.score + '\u2191 \u00b7 ' + t.replyCount + ' replies')}`);
132
+ }
133
+ return 0;
134
+ }
135
+ const boardsResult = await communityBoardsSource(opts);
136
+ const boards = boardsResult.data.boards;
137
+ if (parsed.flags.json) {
138
+ writeJson(io.stdout, { boards });
139
+ return 0;
140
+ }
141
+ writeLine(io.stdout, header('agora community', [`${boards.length} boards`], style));
142
+ writeLine(io.stdout, '');
143
+ for (const b of boards) {
144
+ writeLine(io.stdout, ` ${style.accent('/' + b.id.padEnd(12))} ${style.dim(b.threadCount + ' threads, ' + b.newToday + ' new today')}`);
145
+ }
146
+ writeLine(io.stdout, '');
147
+ writeLine(io.stdout, style.dim('Run `agora community <board>` to see threads.'));
148
+ return 0;
149
+ };
150
+ export const commandThread = async (parsed, io, style) => {
151
+ const id = parsed.args[0];
152
+ if (!id)
153
+ return usageError(io, 'thread requires a thread id');
154
+ const opts = await sourceOptions(parsed, io);
155
+ const result = await communityThreadSource(opts, id);
156
+ const { thread, replies } = result.data;
157
+ if (!thread)
158
+ return usageError(io, `Thread not found: ${id}`);
159
+ if (parsed.flags.json) {
160
+ writeJson(io.stdout, { thread, replies });
161
+ return 0;
162
+ }
163
+ const ageH = Math.round((Date.now() - new Date(thread.createdAt).getTime()) / 3600000);
164
+ writeLine(io.stdout, style.bold(thread.title));
165
+ writeLine(io.stdout, `${style.dim(thread.author + ' \u00b7 ' + ageH + 'h \u00b7 ' + thread.score + '\u2191 \u00b7 ' + thread.replyCount + ' replies')}`);
166
+ writeLine(io.stdout, '');
167
+ writeLine(io.stdout, thread.content);
168
+ if (replies.length > 0) {
169
+ writeLine(io.stdout, '');
170
+ writeLine(io.stdout, style.dim('--- replies ---'));
171
+ for (const r of replies) {
172
+ const rAgeH = Math.round((Date.now() - new Date(r.createdAt).getTime()) / 3600000);
173
+ writeLine(io.stdout, ` ${style.dim(r.author + ' \u00b7 ' + rAgeH + 'h')} ${style.accent(r.score + '\u2191')}`);
174
+ writeLine(io.stdout, ` ${r.content}`);
175
+ }
176
+ }
177
+ return 0;
178
+ };
179
+ export const commandPost = async (parsed, io, style) => {
180
+ const source = await writeSourceOptions(parsed, io);
181
+ if (!source.ok)
182
+ return usageError(io, source.error);
183
+ const board = (stringFlag(parsed, 'board') || stringFlag(parsed, 'b'));
184
+ const title = requiredStringFlag(parsed, 'title');
185
+ const content = contentInput(parsed, io);
186
+ if (!board || !title || !content) {
187
+ return usageError(io, 'post requires --board, --title and --content or --content-file');
188
+ }
189
+ const result = await createThreadSource(source.options, { board, title, content });
190
+ if (parsed.flags.json) {
191
+ writeJson(io.stdout, sourcePayload(result, { thread: result.data.thread }));
192
+ return 0;
193
+ }
194
+ writeLine(io.stdout, `Posted to /${board}: ${style.accent(result.data.thread?.title || title)}`);
195
+ writeLine(io.stdout, `${sourceLabel(result)}`);
196
+ return 0;
197
+ };
198
+ export const commandReply = async (parsed, io, style) => {
199
+ const parentId = parsed.args[0];
200
+ if (!parentId)
201
+ return usageError(io, 'reply requires a thread or reply id');
202
+ const source = await writeSourceOptions(parsed, io);
203
+ if (!source.ok)
204
+ return usageError(io, source.error);
205
+ const content = contentInput(parsed, io);
206
+ if (!content)
207
+ return usageError(io, 'reply requires --content or --content-file');
208
+ const result = await createReplySource(source.options, parentId, {
209
+ content,
210
+ parentId: stringFlag(parsed, 'parentId')
211
+ });
212
+ if (parsed.flags.json) {
213
+ writeJson(io.stdout, sourcePayload(result, { reply: result.data.reply }));
214
+ return 0;
215
+ }
216
+ writeLine(io.stdout, `Replied to ${style.accent(parentId)}`);
217
+ writeLine(io.stdout, `${sourceLabel(result)}`);
218
+ return 0;
219
+ };
220
+ export const commandVote = async (parsed, io, style) => {
221
+ const id = parsed.args[0];
222
+ if (!id)
223
+ return usageError(io, 'vote requires a thread or reply id');
224
+ const source = await writeSourceOptions(parsed, io);
225
+ if (!source.ok)
226
+ return usageError(io, source.error);
227
+ const up = parsed.flags.up === true;
228
+ const down = parsed.flags.down === true;
229
+ if (!up && !down)
230
+ return usageError(io, 'vote requires --up or --down');
231
+ const value = up ? 1 : -1;
232
+ const targetType = (stringFlag(parsed, 'type') || 'discussion');
233
+ await voteSource(source.options, id, { value, targetType });
234
+ if (parsed.flags.json) {
235
+ writeJson(io.stdout, { id, value, targetType, success: true });
236
+ return 0;
237
+ }
238
+ writeLine(io.stdout, up ? `Upvoted ${style.accent(id)}` : `Downvoted ${style.accent(id)}`);
239
+ return 0;
240
+ };
241
+ export const commandFlag = async (parsed, io, style) => {
242
+ const id = parsed.args[0];
243
+ if (!id)
244
+ return usageError(io, 'flag requires an item id');
245
+ const flagMarketplace = (kind) => !kind || kind === 'package' || kind === 'workflow';
246
+ const reasonOpt = stringFlag(parsed, 'reason');
247
+ const validReasons = ['spam', 'harassment', 'undisclosed-llm', 'malicious', 'other'];
248
+ const reason = (reasonOpt && validReasons.includes(reasonOpt) ? reasonOpt : 'other');
249
+ const type = stringFlag(parsed, 'type') || 'discussion';
250
+ if (flagMarketplace(type)) {
251
+ const source = await writeSourceOptions(parsed, io);
252
+ if (!source.ok)
253
+ return usageError(io, source.error);
254
+ const targetType = (type === 'workflow' ? 'workflow' : 'package');
255
+ const result = await flagMarketplaceSource(source.options, id, {
256
+ reason,
257
+ targetType,
258
+ notes: stringFlag(parsed, 'notes')
259
+ });
260
+ if (parsed.flags.json) {
261
+ writeJson(io.stdout, {
262
+ id,
263
+ reason,
264
+ targetType,
265
+ success: result.data.success,
266
+ deduplicated: result.data.deduplicated
267
+ });
268
+ return result.data.success ? 0 : 1;
269
+ }
270
+ if (result.data.deduplicated) {
271
+ writeLine(io.stdout, `Already flagged ${style.accent(id)}`);
272
+ }
273
+ else if (result.data.success) {
274
+ writeLine(io.stdout, `Flagged ${style.accent(id)} for ${reason} (${targetType})`);
275
+ }
276
+ else {
277
+ writeLine(io.stdout, `Could not flag — API not configured. Run \`agora auth login --api-url <url>\` first.`);
278
+ return 1;
279
+ }
280
+ return 0;
281
+ }
282
+ const source = await writeSourceOptions(parsed, io);
283
+ if (!source.ok)
284
+ return usageError(io, source.error);
285
+ const targetType = (type === 'discussion' || type === 'reply' ? type : 'discussion');
286
+ await flagSource(source.options, id, { reason, targetType, notes: stringFlag(parsed, 'notes') });
287
+ if (parsed.flags.json) {
288
+ writeJson(io.stdout, { id, reason, targetType, success: true });
289
+ return 0;
290
+ }
291
+ writeLine(io.stdout, `Flagged ${style.accent(id)} for ${reason}`);
292
+ return 0;
293
+ };
294
+ export const commandDiscussions = async (parsed, io, style) => {
295
+ const category = stringFlag(parsed, 'category', 'c') || 'all';
296
+ const query = parsed.args.join(' ');
297
+ const result = await discussionsSource({ ...(await sourceOptions(parsed, io)), category, query });
298
+ const discussions = result.data;
299
+ warnFallback(result, io);
300
+ if (parsed.flags.json) {
301
+ writeJson(io.stdout, sourcePayload(result, { category, query, count: discussions.length, discussions }));
302
+ return 0;
303
+ }
304
+ if (discussions.length === 0) {
305
+ writeLine(io.stdout, 'No discussions found.');
306
+ return 0;
307
+ }
308
+ writeLine(io.stdout, header('agora discussions', [`${discussions.length} results`, sourceLabel(result)], style));
309
+ writeLine(io.stdout, '');
310
+ writeLine(io.stdout, discussions
311
+ .map((discussion, index) => {
312
+ return [
313
+ `${index + 1}. ${style.accent(discussion.title)} ${style.dim('[' + discussion.category + ']')}`,
314
+ ` ${truncate(discussion.content, 88)}`,
315
+ ` ${style.dim('replies ' + discussion.replies + ' · stars ' + discussion.stars + ' · by ' + discussion.author)}`
316
+ ].join('\n');
317
+ })
318
+ .join('\n\n'));
319
+ return 0;
320
+ };
321
+ export const commandDiscuss = async (parsed, io, style) => {
322
+ const source = await writeSourceOptions(parsed, io);
323
+ if (!source.ok)
324
+ return usageError(io, source.error);
325
+ const title = requiredStringFlag(parsed, 'title');
326
+ const content = contentInput(parsed, io);
327
+ if (!title || !content) {
328
+ return usageError(io, 'discuss requires --title and --content or --content-file');
329
+ }
330
+ const category = discussionCategoryFlag(parsed);
331
+ if (!category.ok)
332
+ return usageError(io, category.error);
333
+ const result = await createDiscussionSource(source.options, {
334
+ title,
335
+ content,
336
+ category: category.value
337
+ });
338
+ if (parsed.flags.json) {
339
+ writeJson(io.stdout, sourcePayload(result, { discussion: result.data }));
340
+ return 0;
341
+ }
342
+ writeLine(io.stdout, `Created discussion ${style.accent(result.data.id)}`);
343
+ writeLine(io.stdout, `${result.data.title} (${sourceLabel(result)})`);
344
+ return 0;
345
+ };
346
+ export const commandAdmin = async (parsed, io, style) => {
347
+ const sub = parsed.args[0];
348
+ if (sub === 'hide') {
349
+ const id = parsed.args[1];
350
+ if (!id)
351
+ return usageError(io, 'admin hide requires an id');
352
+ const reason = stringFlag(parsed, 'reason');
353
+ if (!reason)
354
+ return usageError(io, 'admin hide requires --reason');
355
+ const targetType = (stringFlag(parsed, 'type') || 'discussion');
356
+ if (targetType !== 'discussion' && targetType !== 'reply') {
357
+ return usageError(io, '--type must be discussion or reply');
358
+ }
359
+ const source = await writeSourceOptions(parsed, io);
360
+ if (!source.ok)
361
+ return usageError(io, source.error);
362
+ try {
363
+ const result = await adminHideSource(source.options, id, { targetType, reason });
364
+ if (parsed.flags.json) {
365
+ writeJson(io.stdout, result.data);
366
+ return 0;
367
+ }
368
+ writeLine(io.stdout, `Hid ${style.accent(id)} (${targetType}); audit id ${style.dim(result.data.id)}`);
369
+ return 0;
370
+ }
371
+ catch (e) {
372
+ const msg = e instanceof Error ? e.message : String(e);
373
+ if (msg === 'Admin access required') {
374
+ writeLine(io.stderr, 'Admin access required');
375
+ return 1;
376
+ }
377
+ throw e;
378
+ }
379
+ }
380
+ if (sub === 'log') {
381
+ const limit = numberFlag(parsed, 'limit') || 50;
382
+ const source = await writeSourceOptions(parsed, io);
383
+ if (!source.ok)
384
+ return usageError(io, source.error);
385
+ try {
386
+ const result = await adminLogSource(source.options, { limit });
387
+ const entries = result.data.entries;
388
+ if (parsed.flags.json) {
389
+ writeJson(io.stdout, { entries });
390
+ return 0;
391
+ }
392
+ if (entries.length === 0) {
393
+ writeLine(io.stdout, 'No kill-switch log entries.');
394
+ return 0;
395
+ }
396
+ const COL = { at: 20, op: 16, type: 12, target: 24 };
397
+ writeLine(io.stdout, [
398
+ 'acted_at'.padEnd(COL.at),
399
+ 'operator'.padEnd(COL.op),
400
+ 'type'.padEnd(COL.type),
401
+ 'target'.padEnd(COL.target),
402
+ 'reason'
403
+ ].join(' '));
404
+ writeLine(io.stdout, '-'.repeat(COL.at + COL.op + COL.type + COL.target + 40));
405
+ for (const e of entries) {
406
+ writeLine(io.stdout, [
407
+ e.actedAt.slice(0, COL.at).padEnd(COL.at),
408
+ e.operatorUsername.slice(0, COL.op).padEnd(COL.op),
409
+ e.targetType.slice(0, COL.type).padEnd(COL.type),
410
+ e.targetId.slice(0, COL.target).padEnd(COL.target),
411
+ e.reason
412
+ ].join(' '));
413
+ }
414
+ return 0;
415
+ }
416
+ catch (e) {
417
+ const msg = e instanceof Error ? e.message : String(e);
418
+ if (msg === 'Admin access required') {
419
+ writeLine(io.stderr, 'Admin access required');
420
+ return 1;
421
+ }
422
+ throw e;
423
+ }
424
+ }
425
+ if (sub === 'recompute') {
426
+ const source = await writeSourceOptions(parsed, io);
427
+ if (!source.ok)
428
+ return usageError(io, source.error);
429
+ try {
430
+ const result = await adminRecomputeSource(source.options);
431
+ if (parsed.flags.json) {
432
+ writeJson(io.stdout, result.data);
433
+ return 0;
434
+ }
435
+ writeLine(io.stdout, `Recomputed ${result.data.recomputed} users in ${result.data.durationMs}ms`);
436
+ return 0;
437
+ }
438
+ catch (e) {
439
+ const msg = e instanceof Error ? e.message : String(e);
440
+ if (msg === 'Admin access required') {
441
+ writeLine(io.stderr, 'Admin access required');
442
+ return 1;
443
+ }
444
+ throw e;
445
+ }
446
+ }
447
+ writeLine(io.stdout, 'Usage:');
448
+ writeLine(io.stdout, ' agora admin hide <id> --reason <r> [--type discussion|reply]');
449
+ writeLine(io.stdout, ' agora admin log [--limit 50]');
450
+ writeLine(io.stdout, ' agora admin recompute');
451
+ return 1;
452
+ };
453
+ //# sourceMappingURL=community.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community.js","sourceRoot":"","sources":["../../../src/cli/commands/community.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const commandExport: CommandHandler;
3
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8DjD,eAAO,MAAM,aAAa,EAAE,cA0D3B,CAAC"}