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.
- package/README.md +86 -255
- package/dist/atomic-write.d.ts +10 -0
- package/dist/atomic-write.d.ts.map +1 -0
- package/dist/atomic-write.js +23 -0
- package/dist/atomic-write.js.map +1 -0
- package/dist/auth/refresh.d.ts +17 -0
- package/dist/auth/refresh.d.ts.map +1 -0
- package/dist/auth/refresh.js +50 -0
- package/dist/auth/refresh.js.map +1 -0
- package/dist/cli/app.d.ts +13 -18
- package/dist/cli/app.d.ts.map +1 -1
- package/dist/cli/app.js +184 -1187
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/chat-renderer.d.ts +31 -0
- package/dist/cli/chat-renderer.d.ts.map +1 -0
- package/dist/cli/chat-renderer.js +275 -0
- package/dist/cli/chat-renderer.js.map +1 -0
- package/dist/cli/commands/browse.d.ts +4 -0
- package/dist/cli/commands/browse.d.ts.map +1 -0
- package/dist/cli/commands/browse.js +80 -0
- package/dist/cli/commands/browse.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +4 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +125 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/community.d.ts +12 -0
- package/dist/cli/commands/community.d.ts.map +1 -0
- package/dist/cli/commands/community.js +453 -0
- package/dist/cli/commands/community.js.map +1 -0
- package/dist/cli/commands/export.d.ts +3 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +108 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +299 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/learn.d.ts +4 -0
- package/dist/cli/commands/learn.d.ts.map +1 -0
- package/dist/cli/commands/learn.js +62 -0
- package/dist/cli/commands/learn.js.map +1 -0
- package/dist/cli/commands/marketplace.d.ts +9 -0
- package/dist/cli/commands/marketplace.d.ts.map +1 -0
- package/dist/cli/commands/marketplace.js +321 -0
- package/dist/cli/commands/marketplace.js.map +1 -0
- package/dist/cli/commands/notify.d.ts +3 -0
- package/dist/cli/commands/notify.d.ts.map +1 -0
- package/dist/cli/commands/notify.js +59 -0
- package/dist/cli/commands/notify.js.map +1 -0
- package/dist/cli/commands/operations.d.ts +16 -0
- package/dist/cli/commands/operations.d.ts.map +1 -0
- package/dist/cli/commands/operations.js +1006 -0
- package/dist/cli/commands/operations.js.map +1 -0
- package/dist/cli/commands/ping.d.ts +3 -0
- package/dist/cli/commands/ping.d.ts.map +1 -0
- package/dist/cli/commands/ping.js +56 -0
- package/dist/cli/commands/ping.js.map +1 -0
- package/dist/cli/commands/today.d.ts +3 -0
- package/dist/cli/commands/today.d.ts.map +1 -0
- package/dist/cli/commands/today.js +142 -0
- package/dist/cli/commands/today.js.map +1 -0
- package/dist/cli/commands/types.d.ts +5 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/commands/types.js +2 -0
- package/dist/cli/commands/types.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +41 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/commands/welcome.d.ts +3 -0
- package/dist/cli/commands/welcome.d.ts.map +1 -0
- package/dist/cli/commands/welcome.js +97 -0
- package/dist/cli/commands/welcome.js.map +1 -0
- package/dist/cli/commands-meta.d.ts +21 -0
- package/dist/cli/commands-meta.d.ts.map +1 -0
- package/dist/cli/commands-meta.js +828 -0
- package/dist/cli/commands-meta.js.map +1 -0
- package/dist/cli/completions-gen.d.ts +2 -0
- package/dist/cli/completions-gen.d.ts.map +1 -0
- package/dist/cli/completions-gen.js +195 -0
- package/dist/cli/completions-gen.js.map +1 -0
- package/dist/cli/completions.d.ts +18 -0
- package/dist/cli/completions.d.ts.map +1 -0
- package/dist/cli/completions.js +227 -0
- package/dist/cli/completions.js.map +1 -0
- package/dist/cli/flags.d.ts +19 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +91 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/format.d.ts +19 -0
- package/dist/cli/format.d.ts.map +1 -0
- package/dist/cli/format.js +249 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/helpers.d.ts +95 -0
- package/dist/cli/helpers.d.ts.map +1 -0
- package/dist/cli/helpers.js +301 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/mcp-server.d.ts +4 -0
- package/dist/cli/mcp-server.d.ts.map +1 -0
- package/dist/cli/mcp-server.js +277 -0
- package/dist/cli/mcp-server.js.map +1 -0
- package/dist/cli/menu.d.ts +7 -0
- package/dist/cli/menu.d.ts.map +1 -0
- package/dist/cli/menu.js +172 -0
- package/dist/cli/menu.js.map +1 -0
- package/dist/cli/pages/community.d.ts +9 -0
- package/dist/cli/pages/community.d.ts.map +1 -0
- package/dist/cli/pages/community.js +1094 -0
- package/dist/cli/pages/community.js.map +1 -0
- package/dist/cli/pages/helpers.d.ts +37 -0
- package/dist/cli/pages/helpers.d.ts.map +1 -0
- package/dist/cli/pages/helpers.js +98 -0
- package/dist/cli/pages/helpers.js.map +1 -0
- package/dist/cli/pages/home.d.ts +4 -0
- package/dist/cli/pages/home.d.ts.map +1 -0
- package/dist/cli/pages/home.js +231 -0
- package/dist/cli/pages/home.js.map +1 -0
- package/dist/cli/pages/marketplace.d.ts +5 -0
- package/dist/cli/pages/marketplace.d.ts.map +1 -0
- package/dist/cli/pages/marketplace.js +583 -0
- package/dist/cli/pages/marketplace.js.map +1 -0
- package/dist/cli/pages/news.d.ts +31 -0
- package/dist/cli/pages/news.d.ts.map +1 -0
- package/dist/cli/pages/news.js +688 -0
- package/dist/cli/pages/news.js.map +1 -0
- package/dist/cli/pages/settings.d.ts +3 -0
- package/dist/cli/pages/settings.d.ts.map +1 -0
- package/dist/cli/pages/settings.js +296 -0
- package/dist/cli/pages/settings.js.map +1 -0
- package/dist/cli/pages/types.d.ts +67 -0
- package/dist/cli/pages/types.d.ts.map +1 -0
- package/dist/cli/pages/types.js +2 -0
- package/dist/cli/pages/types.js.map +1 -0
- package/dist/cli/prompter.d.ts +135 -0
- package/dist/cli/prompter.d.ts.map +1 -0
- package/dist/cli/prompter.js +710 -0
- package/dist/cli/prompter.js.map +1 -0
- package/dist/cli/shell.d.ts +23 -0
- package/dist/cli/shell.d.ts.map +1 -0
- package/dist/cli/shell.js +1106 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/cli/tui.d.ts +7 -0
- package/dist/cli/tui.d.ts.map +1 -0
- package/dist/cli/tui.js +419 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +14 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +28 -0
- package/dist/commands.js.map +1 -0
- package/dist/community/client.d.ts +84 -0
- package/dist/community/client.d.ts.map +1 -0
- package/dist/community/client.js +340 -0
- package/dist/community/client.js.map +1 -0
- package/dist/community/search.d.ts +25 -0
- package/dist/community/search.d.ts.map +1 -0
- package/dist/community/search.js +62 -0
- package/dist/community/search.js.map +1 -0
- package/dist/community/types.d.ts +71 -0
- package/dist/community/types.d.ts.map +1 -0
- package/dist/community/types.js +11 -0
- package/dist/community/types.js.map +1 -0
- package/dist/config.d.ts +1 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -32
- package/dist/config.js.map +1 -1
- package/dist/data.d.ts +1 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +778 -40
- package/dist/data.js.map +1 -1
- package/dist/format.d.ts +5 -39
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +5 -120
- package/dist/format.js.map +1 -1
- package/dist/history.d.ts +13 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +37 -0
- package/dist/history.js.map +1 -0
- package/dist/hubs/cache.d.ts +6 -0
- package/dist/hubs/cache.d.ts.map +1 -0
- package/dist/hubs/cache.js +46 -0
- package/dist/hubs/cache.js.map +1 -0
- package/dist/hubs/enrichment.d.ts +43 -0
- package/dist/hubs/enrichment.d.ts.map +1 -0
- package/dist/hubs/enrichment.js +239 -0
- package/dist/hubs/enrichment.js.map +1 -0
- package/dist/hubs/github.d.ts +12 -0
- package/dist/hubs/github.d.ts.map +1 -0
- package/dist/hubs/github.js +54 -0
- package/dist/hubs/github.js.map +1 -0
- package/dist/hubs/huggingface.d.ts +27 -0
- package/dist/hubs/huggingface.d.ts.map +1 -0
- package/dist/hubs/huggingface.js +88 -0
- package/dist/hubs/huggingface.js.map +1 -0
- package/dist/hubs/quality.d.ts +26 -0
- package/dist/hubs/quality.d.ts.map +1 -0
- package/dist/hubs/quality.js +57 -0
- package/dist/hubs/quality.js.map +1 -0
- package/dist/hubs/types.d.ts +30 -0
- package/dist/hubs/types.d.ts.map +1 -0
- package/dist/hubs/types.js +2 -0
- package/dist/hubs/types.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +188 -224
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +6 -11
- package/dist/init.js.map +1 -1
- package/dist/live.d.ts +14 -0
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +35 -3
- package/dist/live.js.map +1 -1
- package/dist/marketplace.d.ts +25 -3
- package/dist/marketplace.d.ts.map +1 -1
- package/dist/marketplace.js +279 -22
- package/dist/marketplace.js.map +1 -1
- package/dist/news/cache.d.ts +13 -0
- package/dist/news/cache.d.ts.map +1 -0
- package/dist/news/cache.js +66 -0
- package/dist/news/cache.js.map +1 -0
- package/dist/news/score.d.ts +4 -0
- package/dist/news/score.d.ts.map +1 -0
- package/dist/news/score.js +43 -0
- package/dist/news/score.js.map +1 -0
- package/dist/news/sources/arxiv.d.ts +9 -0
- package/dist/news/sources/arxiv.d.ts.map +1 -0
- package/dist/news/sources/arxiv.js +107 -0
- package/dist/news/sources/arxiv.js.map +1 -0
- package/dist/news/sources/github-trending.d.ts +9 -0
- package/dist/news/sources/github-trending.d.ts.map +1 -0
- package/dist/news/sources/github-trending.js +97 -0
- package/dist/news/sources/github-trending.js.map +1 -0
- package/dist/news/sources/hn.d.ts +9 -0
- package/dist/news/sources/hn.d.ts.map +1 -0
- package/dist/news/sources/hn.js +57 -0
- package/dist/news/sources/hn.js.map +1 -0
- package/dist/news/sources/reddit.d.ts +9 -0
- package/dist/news/sources/reddit.d.ts.map +1 -0
- package/dist/news/sources/reddit.js +69 -0
- package/dist/news/sources/reddit.js.map +1 -0
- package/dist/news/sources/rss.d.ts +13 -0
- package/dist/news/sources/rss.d.ts.map +1 -0
- package/dist/news/sources/rss.js +14 -0
- package/dist/news/sources/rss.js.map +1 -0
- package/dist/news/types.d.ts +42 -0
- package/dist/news/types.d.ts.map +1 -0
- package/dist/news/types.js +56 -0
- package/dist/news/types.js.map +1 -0
- package/dist/preferences.d.ts +14 -0
- package/dist/preferences.d.ts.map +1 -0
- package/dist/preferences.js +31 -0
- package/dist/preferences.js.map +1 -0
- package/dist/settings.d.ts +26 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +251 -0
- package/dist/settings.js.map +1 -0
- package/dist/state.d.ts +9 -2
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +41 -19
- package/dist/state.js.map +1 -1
- package/dist/transcript.d.ts +28 -0
- package/dist/transcript.d.ts.map +1 -0
- package/dist/transcript.js +79 -0
- package/dist/transcript.js.map +1 -0
- package/dist/types.d.ts +19 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts +157 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +296 -0
- package/dist/ui.js.map +1 -0
- package/package.json +11 -9
- package/dist/api.d.ts +0 -72
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -109
- package/dist/api.js.map +0 -1
- package/dist/logger.d.ts +0 -20
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -59
- 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 @@
|
|
|
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"}
|