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,828 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders a command manual page using the provided styler.
|
|
3
|
+
* Used by both `agora help <command>` (scriptable) and the interactive menu (TTY).
|
|
4
|
+
*/
|
|
5
|
+
export function renderManual(meta, style) {
|
|
6
|
+
const lines = [
|
|
7
|
+
style.accent(meta.name),
|
|
8
|
+
meta.summary,
|
|
9
|
+
'',
|
|
10
|
+
`${style.dim('Usage:')}`,
|
|
11
|
+
...meta.usage.split('\n').map((line) => ` ${line}`)
|
|
12
|
+
];
|
|
13
|
+
if (meta.flags && meta.flags.length > 0) {
|
|
14
|
+
const flagWidth = Math.max(...meta.flags.map((f) => f.flag.length));
|
|
15
|
+
lines.push('');
|
|
16
|
+
lines.push(style.dim('Flags:'));
|
|
17
|
+
for (const f of meta.flags) {
|
|
18
|
+
lines.push(` ${f.flag.padEnd(flagWidth)} ${style.dim(f.description)}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (meta.examples && meta.examples.length > 0) {
|
|
22
|
+
lines.push('');
|
|
23
|
+
lines.push(style.dim('Examples:'));
|
|
24
|
+
for (const ex of meta.examples) {
|
|
25
|
+
lines.push(` ${ex}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (meta.details) {
|
|
29
|
+
lines.push('');
|
|
30
|
+
lines.push(meta.details);
|
|
31
|
+
}
|
|
32
|
+
return lines.join('\n');
|
|
33
|
+
}
|
|
34
|
+
export const COMMANDS = [
|
|
35
|
+
// Marketplace
|
|
36
|
+
{
|
|
37
|
+
name: 'search',
|
|
38
|
+
group: 'Marketplace',
|
|
39
|
+
summary: 'Search the marketplace for packages and workflows',
|
|
40
|
+
usage: 'agora search <query> [--category mcp|prompt|workflow|skill] [--limit 10] [--json]',
|
|
41
|
+
details: 'Searches all marketplace items by keyword. Use --category to filter by kind. ' +
|
|
42
|
+
'Add --api to query the live Agora API; without it, the bundled offline data is used.',
|
|
43
|
+
flags: [
|
|
44
|
+
{ flag: '--category, -c', description: 'Filter by category: mcp, prompt, workflow, skill' },
|
|
45
|
+
{ flag: '--limit, -n', description: 'Maximum number of results (default 10)' },
|
|
46
|
+
{ flag: '--json', description: 'Output results as JSON' }
|
|
47
|
+
],
|
|
48
|
+
examples: [
|
|
49
|
+
'agora search filesystem',
|
|
50
|
+
'agora search filesystem --api',
|
|
51
|
+
'agora search github --category mcp --limit 5'
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'browse',
|
|
56
|
+
group: 'Marketplace',
|
|
57
|
+
summary: 'View full details for a single marketplace item',
|
|
58
|
+
usage: 'agora browse <id> [--type package|workflow] [--json]',
|
|
59
|
+
details: 'Fetches and displays the full metadata for a package or workflow by its id. ' +
|
|
60
|
+
'Use --type to disambiguate when an id is shared by multiple kinds.',
|
|
61
|
+
flags: [
|
|
62
|
+
{ flag: '--type, -t', description: 'Item kind: package or workflow' },
|
|
63
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
64
|
+
],
|
|
65
|
+
examples: ['agora browse mcp-github', 'agora browse mcp-github --type package']
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'trending',
|
|
69
|
+
group: 'Marketplace',
|
|
70
|
+
summary: 'Show trending packages and workflows',
|
|
71
|
+
usage: 'agora trending [all|packages|workflows] [--limit 5] [--json]',
|
|
72
|
+
details: 'Lists the most-starred marketplace items. Pass a category filter as the first positional ' +
|
|
73
|
+
'argument, or use --category.',
|
|
74
|
+
flags: [
|
|
75
|
+
{
|
|
76
|
+
flag: '--category, -c',
|
|
77
|
+
description: 'Category filter: all, packages, workflows (default all)'
|
|
78
|
+
},
|
|
79
|
+
{ flag: '--limit, -n', description: 'Maximum number of results (default 5)' },
|
|
80
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
81
|
+
],
|
|
82
|
+
examples: ['agora trending', 'agora trending packages', 'agora trending --limit 10']
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'workflows',
|
|
86
|
+
group: 'Marketplace',
|
|
87
|
+
summary: 'List and search AI workflow templates',
|
|
88
|
+
usage: 'agora workflows [query] [--limit 10] [--json]',
|
|
89
|
+
details: 'Searches the workflow subset of the marketplace. Provide an optional keyword to narrow results.',
|
|
90
|
+
flags: [
|
|
91
|
+
{ flag: '--limit, -n', description: 'Maximum number of results (default 10)' },
|
|
92
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
93
|
+
],
|
|
94
|
+
examples: ['agora workflows', 'agora workflows tdd', 'agora workflows security --json']
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'similar',
|
|
98
|
+
group: 'Marketplace',
|
|
99
|
+
summary: 'Find similar marketplace items by tag overlap',
|
|
100
|
+
usage: 'agora similar <id> [--limit 5] [--type package|workflow] [--json]',
|
|
101
|
+
details: 'Computes tag-IDF-weighted Jaccard similarity between marketplace items. ' +
|
|
102
|
+
'Ranks by similarity score, tiebroken by install count. ' +
|
|
103
|
+
'Use --type to restrict to packages or workflows.',
|
|
104
|
+
flags: [
|
|
105
|
+
{ flag: '--type, -t', description: 'Item kind: package or workflow (default all)' },
|
|
106
|
+
{ flag: '--limit, -n', description: 'Maximum number of results (default 5)' },
|
|
107
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
108
|
+
],
|
|
109
|
+
examples: [
|
|
110
|
+
'agora similar mcp-postgres',
|
|
111
|
+
'agora similar mcp-github --limit 3',
|
|
112
|
+
'agora similar wf-tdd-cycle --type workflow'
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'compare',
|
|
117
|
+
group: 'Marketplace',
|
|
118
|
+
summary: 'Compare two or more marketplace items side by side',
|
|
119
|
+
usage: 'agora compare <id1> <id2> [<id3>...] [--type package|workflow] [--json]',
|
|
120
|
+
details: 'Renders a box-drawn table comparing items across attributes: name, author, installs, ' +
|
|
121
|
+
'stars, category, tags, npmPackage. Shared tags are highlighted in the accent colour.',
|
|
122
|
+
flags: [
|
|
123
|
+
{ flag: '--type, -t', description: 'Item kind: package or workflow (default all)' },
|
|
124
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
125
|
+
],
|
|
126
|
+
examples: [
|
|
127
|
+
'agora compare mcp-postgres mcp-supabase',
|
|
128
|
+
'agora compare mcp-github mcp-gitlab mcp-git'
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'chat',
|
|
133
|
+
group: 'Marketplace',
|
|
134
|
+
summary: 'Chat with an AI assistant about the Agora marketplace',
|
|
135
|
+
usage: 'agora chat [message] [--continue] [--session <id>] [--model <model>]',
|
|
136
|
+
details: 'Starts an interactive OpenCode TUI session with a free model. ' +
|
|
137
|
+
'Pass a message for one-shot mode (scriptable). ' +
|
|
138
|
+
'The TUI gives you a full REPL with conversation history, editing, and /agora commands.',
|
|
139
|
+
flags: [
|
|
140
|
+
{ flag: '--model, -m', description: 'Model to use (default: deepseek-v4-flash-free)' },
|
|
141
|
+
{ flag: '--continue', description: 'Continue the last conversation' },
|
|
142
|
+
{ flag: '--session, -s', description: 'Continue a specific session by ID' },
|
|
143
|
+
{ flag: '--json', description: 'Output raw JSON events (one-shot mode only)' }
|
|
144
|
+
],
|
|
145
|
+
examples: [
|
|
146
|
+
'agora chat',
|
|
147
|
+
'agora chat "what MCP servers are for postgres?"',
|
|
148
|
+
'agora chat --continue "follow up question"',
|
|
149
|
+
'agora chat -m nemotron-3-super-free'
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: 'install',
|
|
154
|
+
group: 'Marketplace',
|
|
155
|
+
summary: 'Install a package into your OpenCode config',
|
|
156
|
+
usage: 'agora install <id> [--write] [--config path] [--json]',
|
|
157
|
+
details: 'Generates an install plan for a marketplace package. Without --write the plan is previewed only. ' +
|
|
158
|
+
'With --write, opencode.json is updated and any required npm packages are installed.',
|
|
159
|
+
flags: [
|
|
160
|
+
{ flag: '--write', description: 'Apply the install plan (update config + run npm install)' },
|
|
161
|
+
{ flag: '--config', description: 'Path to opencode.json (auto-detected by default)' },
|
|
162
|
+
{ flag: '--type, -t', description: 'Item kind: package or workflow' },
|
|
163
|
+
{ flag: '--json', description: 'Output plan as JSON' }
|
|
164
|
+
],
|
|
165
|
+
examples: [
|
|
166
|
+
'agora install mcp-github',
|
|
167
|
+
'agora install mcp-github --write',
|
|
168
|
+
'agora install mcp-github --write --config ./opencode.json'
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
// Setup
|
|
172
|
+
{
|
|
173
|
+
name: 'init',
|
|
174
|
+
group: 'Setup',
|
|
175
|
+
summary: 'Scaffold Agora into the current project, or generate MCP server templates',
|
|
176
|
+
usage: 'agora init [--dry-run] [--json] [--mcp]\n agora init --template node-mcp|python-mcp',
|
|
177
|
+
details: 'Without --template, scans the current directory, generates an opencode.json with recommended MCP servers, ' +
|
|
178
|
+
'and installs the /agora slash command. Use --dry-run to preview without writing.\n\n' +
|
|
179
|
+
'With --template, scaffolds a complete MCP server project in the current directory.',
|
|
180
|
+
flags: [
|
|
181
|
+
{ flag: '--dry-run', description: 'Preview what would be written without applying changes' },
|
|
182
|
+
{ flag: '--json', description: 'Output the generated config as JSON' },
|
|
183
|
+
{ flag: '--mcp', description: 'Also register the Agora MCP server in the config' },
|
|
184
|
+
{ flag: '--template', description: 'Scaffold a project: node-mcp or python-mcp' }
|
|
185
|
+
],
|
|
186
|
+
examples: [
|
|
187
|
+
'agora init',
|
|
188
|
+
'agora init --dry-run',
|
|
189
|
+
'agora init --mcp',
|
|
190
|
+
'agora init --template node-mcp',
|
|
191
|
+
'agora init --template python-mcp'
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
name: 'use',
|
|
196
|
+
group: 'Setup',
|
|
197
|
+
summary: 'Apply a workflow template as an OpenCode skill',
|
|
198
|
+
usage: 'agora use <workflow-id> [--json]',
|
|
199
|
+
details: 'Copies a workflow from the marketplace into .opencode/skills/ and registers it in opencode.json ' +
|
|
200
|
+
'so OpenCode can load it on the next restart.',
|
|
201
|
+
flags: [{ flag: '--json', description: 'Output result as JSON' }],
|
|
202
|
+
examples: ['agora use wf-tdd-cycle', 'agora use wf-security-audit']
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
name: 'menu',
|
|
206
|
+
group: 'Setup',
|
|
207
|
+
summary: 'Browse commands interactively (the old menu)',
|
|
208
|
+
usage: 'agora menu',
|
|
209
|
+
details: 'Opens the interactive command browser powered by @clack/prompts.',
|
|
210
|
+
examples: ['agora menu']
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
name: 'tui',
|
|
214
|
+
group: 'Setup',
|
|
215
|
+
summary: 'Open the full-screen Agora TUI (Home · Market · Comm · News · Settings)',
|
|
216
|
+
usage: 'agora tui',
|
|
217
|
+
details: 'Opens the keyboard-driven TUI with five pages, switched by 1-5 or Tab. ' +
|
|
218
|
+
'j/k navigates, Enter drills in, Esc backs out, ? toggles help, q quits. ' +
|
|
219
|
+
'Pages: Home (recommendation engine), Marketplace (browse + install preview), ' +
|
|
220
|
+
'Community (boards/threads/reader against fixtures until backend lands), ' +
|
|
221
|
+
'News (ranked feed against fixtures until news adapters land), ' +
|
|
222
|
+
'Settings (account, display, news sources, community defaults).',
|
|
223
|
+
examples: ['agora tui']
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
name: 'config',
|
|
227
|
+
group: 'Setup',
|
|
228
|
+
summary: 'Inspect, validate, diff, fix, show, or edit your OpenCode configuration',
|
|
229
|
+
usage: 'agora config doctor [--fix] [--deep] [--config path] [--json]\n' +
|
|
230
|
+
' agora config show [--config path] [--json]\n' +
|
|
231
|
+
' agora config edit [--config path]\n' +
|
|
232
|
+
' agora config diff <path1> <path2> [--json]',
|
|
233
|
+
details: 'Doctor runs a health-check on opencode.json: reports path, validity, MCP server count, and plugins. ' +
|
|
234
|
+
'Add --fix to auto-heal common issues (missing $schema, duplicate plugins, empty MCP entries). ' +
|
|
235
|
+
'Add --deep for full diagnostics (opencode PATH, npm package checks, GitHub token, data dir). ' +
|
|
236
|
+
'Show prints the full compiled config. Edit opens the config in $EDITOR. ' +
|
|
237
|
+
'Diff compares two config files side by side, showing MCP and plugin deltas.',
|
|
238
|
+
flags: [
|
|
239
|
+
{ flag: '--fix', description: 'Auto-heal common config issues' },
|
|
240
|
+
{ flag: '--deep', description: 'Full diagnostics (opencode PATH, npm checks, tokens)' },
|
|
241
|
+
{ flag: '--config', description: 'Explicit path to opencode.json' },
|
|
242
|
+
{ flag: '--json', description: 'Output report as JSON' }
|
|
243
|
+
],
|
|
244
|
+
examples: [
|
|
245
|
+
'agora config doctor',
|
|
246
|
+
'agora config doctor --fix',
|
|
247
|
+
'agora config doctor --deep',
|
|
248
|
+
'agora config show',
|
|
249
|
+
'agora config edit',
|
|
250
|
+
'agora config diff opencode.json ~/.config/opencode/opencode.json'
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
// Library
|
|
254
|
+
{
|
|
255
|
+
name: 'save',
|
|
256
|
+
group: 'Library',
|
|
257
|
+
summary: 'Save a marketplace item to your local library',
|
|
258
|
+
usage: 'agora save <id> [--data-dir path] [--json]',
|
|
259
|
+
details: 'Persists a package or workflow reference in the Agora state file so you can recall it later ' +
|
|
260
|
+
'with `agora saved`.',
|
|
261
|
+
flags: [
|
|
262
|
+
{ flag: '--data-dir', description: 'Override the Agora data directory' },
|
|
263
|
+
{ flag: '--type, -t', description: 'Item kind: package or workflow' },
|
|
264
|
+
{ flag: '--json', description: 'Output result as JSON' }
|
|
265
|
+
],
|
|
266
|
+
examples: ['agora save wf-security-audit', 'agora save mcp-github --data-dir ~/.agora']
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: 'saved',
|
|
270
|
+
group: 'Library',
|
|
271
|
+
summary: 'List saved marketplace items',
|
|
272
|
+
usage: 'agora saved [query] [--data-dir path] [--json]',
|
|
273
|
+
details: 'Shows all items in your local library. Provide a keyword to filter the list.',
|
|
274
|
+
flags: [
|
|
275
|
+
{ flag: '--data-dir', description: 'Override the Agora data directory' },
|
|
276
|
+
{ flag: '--json', description: 'Output list as JSON' }
|
|
277
|
+
],
|
|
278
|
+
examples: ['agora saved', 'agora saved github', 'agora saved --json']
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
name: 'remove',
|
|
282
|
+
group: 'Library',
|
|
283
|
+
summary: 'Remove an item from your saved library',
|
|
284
|
+
usage: 'agora remove <id> [--data-dir path] [--json]',
|
|
285
|
+
details: 'Deletes a saved item from the Agora state file by its id.',
|
|
286
|
+
flags: [
|
|
287
|
+
{ flag: '--data-dir', description: 'Override the Agora data directory' },
|
|
288
|
+
{ flag: '--json', description: 'Output result as JSON' }
|
|
289
|
+
],
|
|
290
|
+
examples: ['agora remove wf-security-audit', 'agora remove mcp-github']
|
|
291
|
+
},
|
|
292
|
+
// Learn
|
|
293
|
+
{
|
|
294
|
+
name: 'tutorials',
|
|
295
|
+
group: 'Learn',
|
|
296
|
+
summary: 'List available step-by-step tutorials',
|
|
297
|
+
usage: 'agora tutorials [query] [--level beginner|intermediate|advanced] [--limit 20] [--json]',
|
|
298
|
+
details: 'Browses the tutorial catalog. Filter by keyword and skill level. ' +
|
|
299
|
+
'Use `agora tutorial <id>` to start a specific tutorial.',
|
|
300
|
+
flags: [
|
|
301
|
+
{ flag: '--level', description: 'Skill level: beginner, intermediate, or advanced' },
|
|
302
|
+
{ flag: '--limit, -n', description: 'Maximum number of results (default 20)' },
|
|
303
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
304
|
+
],
|
|
305
|
+
examples: ['agora tutorials', 'agora tutorials mcp', 'agora tutorials --level beginner']
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
name: 'tutorial',
|
|
309
|
+
group: 'Learn',
|
|
310
|
+
summary: 'Read a tutorial step-by-step',
|
|
311
|
+
usage: 'agora tutorial <id> [step] [--json]',
|
|
312
|
+
details: 'Displays a single tutorial step. Omit the step number to start from step 1. ' +
|
|
313
|
+
'Increment the step number to advance through the tutorial.',
|
|
314
|
+
flags: [
|
|
315
|
+
{ flag: '--step', description: 'Step number to display (default 1)' },
|
|
316
|
+
{ flag: '--json', description: 'Output step as JSON' }
|
|
317
|
+
],
|
|
318
|
+
examples: [
|
|
319
|
+
'agora tutorial tut-mcp-basics',
|
|
320
|
+
'agora tutorial tut-mcp-basics 2',
|
|
321
|
+
'agora tutorial tut-mcp-basics --json'
|
|
322
|
+
]
|
|
323
|
+
},
|
|
324
|
+
// Community
|
|
325
|
+
{
|
|
326
|
+
name: 'discuss',
|
|
327
|
+
group: 'Community',
|
|
328
|
+
summary: 'Post a new community discussion',
|
|
329
|
+
usage: 'agora discuss --title <title> (--content <text>|--content-file path) [--category question|idea|showcase|discussion]',
|
|
330
|
+
details: 'Creates a new discussion thread via the Agora API. Requires --api-url and a token ' +
|
|
331
|
+
'(via --token, AGORA_TOKEN, or `agora auth login`).',
|
|
332
|
+
flags: [
|
|
333
|
+
{ flag: '--title', description: 'Discussion title (required)' },
|
|
334
|
+
{ flag: '--content', description: 'Discussion body as inline text' },
|
|
335
|
+
{ flag: '--content-file', description: 'Read discussion body from a file' },
|
|
336
|
+
{
|
|
337
|
+
flag: '--category, -c',
|
|
338
|
+
description: 'Category: question, idea, showcase, discussion (default discussion)'
|
|
339
|
+
},
|
|
340
|
+
{ flag: '--json', description: 'Output created discussion as JSON' }
|
|
341
|
+
],
|
|
342
|
+
examples: [
|
|
343
|
+
'agora discuss --title "MCP question" --content "How are you composing servers?" --category question',
|
|
344
|
+
'agora discuss --title "My workflow" --content-file ./prompt.md --category showcase'
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
name: 'discussions',
|
|
349
|
+
group: 'Community',
|
|
350
|
+
summary: 'Browse community discussions',
|
|
351
|
+
usage: 'agora discussions [query] [--category question|idea|showcase|discussion] [--json]',
|
|
352
|
+
details: 'Lists community discussion threads from the Agora API. Requires --api-url. ' +
|
|
353
|
+
'Filter by keyword or category.',
|
|
354
|
+
flags: [
|
|
355
|
+
{
|
|
356
|
+
flag: '--category, -c',
|
|
357
|
+
description: 'Category filter: question, idea, showcase, or discussion'
|
|
358
|
+
},
|
|
359
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
360
|
+
],
|
|
361
|
+
examples: [
|
|
362
|
+
'agora discussions',
|
|
363
|
+
'agora discussions --category question',
|
|
364
|
+
'agora discussions mcp --json'
|
|
365
|
+
]
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
name: 'review',
|
|
369
|
+
group: 'Community',
|
|
370
|
+
summary: 'Post a rating and review for a marketplace item',
|
|
371
|
+
usage: 'agora review <id> --rating 5 --content <text>',
|
|
372
|
+
details: 'Submits a review to the Agora API. Requires --api-url and a token ' +
|
|
373
|
+
'(via --token, AGORA_TOKEN, or `agora auth login`). Rating must be 1–5.',
|
|
374
|
+
flags: [
|
|
375
|
+
{ flag: '--rating, -r', description: 'Star rating 1–5 (required)' },
|
|
376
|
+
{ flag: '--content', description: 'Review text (required)' },
|
|
377
|
+
{ flag: '--type, -t', description: 'Item kind: package or workflow (auto-detected)' },
|
|
378
|
+
{ flag: '--json', description: 'Output created review as JSON' }
|
|
379
|
+
],
|
|
380
|
+
examples: [
|
|
381
|
+
'agora review mcp-github --rating 5 --content "Works well"',
|
|
382
|
+
'agora review wf-security-audit --rating 4 --content "Solid workflow" --type workflow'
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
name: 'reviews',
|
|
387
|
+
group: 'Community',
|
|
388
|
+
summary: 'List reviews for a marketplace item',
|
|
389
|
+
usage: 'agora reviews [id] [--type package|workflow] [--api-url url] [--json]',
|
|
390
|
+
details: 'Fetches reviews from the Agora API. Requires --api-url. ' +
|
|
391
|
+
'Omit the id to list all recent reviews.',
|
|
392
|
+
flags: [
|
|
393
|
+
{ flag: '--type, -t', description: 'Item kind: package or workflow' },
|
|
394
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
395
|
+
],
|
|
396
|
+
examples: [
|
|
397
|
+
'agora reviews mcp-github --api-url https://agora.example.com',
|
|
398
|
+
'agora reviews --json'
|
|
399
|
+
]
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
name: 'profile',
|
|
403
|
+
group: 'Community',
|
|
404
|
+
summary: 'View a community member profile',
|
|
405
|
+
usage: 'agora profile <username> [--json]',
|
|
406
|
+
details: 'Retrieves a user profile from the Agora API. Requires --api-url. ' +
|
|
407
|
+
'Displays packages, workflows, and discussion counts.',
|
|
408
|
+
flags: [
|
|
409
|
+
{ flag: '--username', description: 'Username (alternative to positional argument)' },
|
|
410
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
411
|
+
],
|
|
412
|
+
examples: ['agora profile alice', 'agora profile alice --api-url https://agora.example.com']
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
name: 'publish',
|
|
416
|
+
group: 'Community',
|
|
417
|
+
summary: 'Publish a package or workflow to the marketplace',
|
|
418
|
+
usage: 'agora publish package --name <name> --description <text> --npm <package> [--token token]\n' +
|
|
419
|
+
' agora publish workflow --name <name> --description <text> --prompt-file <path> [--token token]',
|
|
420
|
+
details: 'Submits a new package or workflow to the Agora API. Requires --api-url and a token ' +
|
|
421
|
+
'(via --token, AGORA_TOKEN, or `agora auth login`).',
|
|
422
|
+
flags: [
|
|
423
|
+
{ flag: '--name', description: 'Item name (required)' },
|
|
424
|
+
{ flag: '--description, -d', description: 'Short description (required)' },
|
|
425
|
+
{ flag: '--npm', description: 'npm package name (required for MCP packages)' },
|
|
426
|
+
{
|
|
427
|
+
flag: '--prompt-file',
|
|
428
|
+
description: 'Path to workflow prompt file (required for workflows)'
|
|
429
|
+
},
|
|
430
|
+
{ flag: '--prompt', description: 'Workflow prompt as inline text' },
|
|
431
|
+
{ flag: '--version', description: 'Package version (default 1.0.0)' },
|
|
432
|
+
{ flag: '--category, -c', description: 'Category (default mcp)' },
|
|
433
|
+
{ flag: '--tags', description: 'Comma-separated tags' },
|
|
434
|
+
{ flag: '--repo, --repository', description: 'Repository URL' },
|
|
435
|
+
{ flag: '--model', description: 'Preferred model for workflow' },
|
|
436
|
+
{ flag: '--json', description: 'Output published item as JSON' }
|
|
437
|
+
],
|
|
438
|
+
examples: [
|
|
439
|
+
'agora publish package --name @you/server --description "MCP server" --npm @you/server',
|
|
440
|
+
'agora publish workflow --name "My Workflow" --description "Review workflow" --prompt-file ./prompt.md'
|
|
441
|
+
]
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
name: 'news',
|
|
445
|
+
group: 'Marketplace',
|
|
446
|
+
summary: 'Browse ranked tech news from HN, Reddit, GitHub, arXiv',
|
|
447
|
+
usage: 'agora news [query] [--source hn|reddit|gh|arxiv] [--limit 20] [--refresh] [--json]',
|
|
448
|
+
details: 'Fetches and ranks news stories from multiple sources using a recency-engagement-topic scoring algorithm. ' +
|
|
449
|
+
'Cached locally in ~/.config/agora/news-cache.jsonl. ' +
|
|
450
|
+
'Use --refresh to force re-fetch; --source to filter by source; a positional query to search titles and tags.',
|
|
451
|
+
flags: [
|
|
452
|
+
{ flag: '--source, -s', description: 'Source filter: hn, reddit, gh, arxiv' },
|
|
453
|
+
{ flag: '--limit, -n', description: 'Maximum number of results (default 20)' },
|
|
454
|
+
{ flag: '--refresh', description: 'Force re-fetch all enabled sources' },
|
|
455
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
456
|
+
],
|
|
457
|
+
examples: [
|
|
458
|
+
'agora news',
|
|
459
|
+
'agora news mcp',
|
|
460
|
+
'agora news --source hn --limit 5',
|
|
461
|
+
'agora news --refresh'
|
|
462
|
+
]
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
name: 'today',
|
|
466
|
+
group: 'Marketplace',
|
|
467
|
+
summary: 'Daily digest: top news, community threads, and trending items from the last 24h',
|
|
468
|
+
usage: 'agora today [--section news|community|market|all] [--json]',
|
|
469
|
+
flags: [
|
|
470
|
+
{ flag: '--section, -s', description: 'Show only one section: news, community, market, or all (default all)' },
|
|
471
|
+
{ flag: '--json', description: 'Output { at, news, threads, trending } as JSON' }
|
|
472
|
+
],
|
|
473
|
+
examples: [
|
|
474
|
+
'agora today',
|
|
475
|
+
'agora today --section news',
|
|
476
|
+
'agora today --json'
|
|
477
|
+
]
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
name: 'community',
|
|
481
|
+
group: 'Community',
|
|
482
|
+
summary: 'Browse community boards and threads',
|
|
483
|
+
usage: 'agora community [board] [--sort top|new|active] [--json]',
|
|
484
|
+
details: 'Without a board, lists all available boards with thread counts. ' +
|
|
485
|
+
'With a board (e.g. mcp, agents), lists threads in that board sorted by activity. ' +
|
|
486
|
+
'Use `agora thread <id>` to read a specific thread.',
|
|
487
|
+
flags: [
|
|
488
|
+
{ flag: '--sort', description: 'Sort order: top, new, active (default active)' },
|
|
489
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
490
|
+
],
|
|
491
|
+
examples: ['agora community', 'agora community mcp', 'agora community agents --sort top']
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
name: 'thread',
|
|
495
|
+
group: 'Community',
|
|
496
|
+
summary: 'Read a community thread with replies',
|
|
497
|
+
usage: 'agora thread <id> [--json]',
|
|
498
|
+
details: 'Displays a full thread with its reply tree.',
|
|
499
|
+
flags: [{ flag: '--json', description: 'Output as JSON' }],
|
|
500
|
+
examples: ['agora thread t-mcp-1']
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
name: 'post',
|
|
504
|
+
group: 'Community',
|
|
505
|
+
summary: 'Create a new community thread',
|
|
506
|
+
usage: 'agora post --board <board> --title <title> (--content <text>|--content-file <path>) [--json]',
|
|
507
|
+
details: 'Posts a new thread to a community board. Requires --api-url and a token ' +
|
|
508
|
+
'(via --token, AGORA_TOKEN, or `agora auth login`). ' +
|
|
509
|
+
'Boards: mcp, agents, tools, workflows, show, ask, meta.',
|
|
510
|
+
flags: [
|
|
511
|
+
{ flag: '--board, -b', description: 'Target board (required)' },
|
|
512
|
+
{ flag: '--title', description: 'Thread title (required)' },
|
|
513
|
+
{ flag: '--content', description: 'Thread body as inline text' },
|
|
514
|
+
{ flag: '--content-file', description: 'Read body from a file' },
|
|
515
|
+
{ flag: '--json', description: 'Output created thread as JSON' }
|
|
516
|
+
],
|
|
517
|
+
examples: [
|
|
518
|
+
'agora post --board mcp --title "My question" --content "How do I?"',
|
|
519
|
+
'agora post --board show --title "My project" --content-file ./readme.md'
|
|
520
|
+
]
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
name: 'reply',
|
|
524
|
+
group: 'Community',
|
|
525
|
+
summary: 'Reply to a thread or another reply',
|
|
526
|
+
usage: 'agora reply <id> (--content <text>|--content-file <path>) [--parent-id <id>] [--json]',
|
|
527
|
+
details: 'Posts a reply to an existing thread or reply. ' + 'Requires --api-url and a token.',
|
|
528
|
+
flags: [
|
|
529
|
+
{ flag: '--content', description: 'Reply body as inline text' },
|
|
530
|
+
{ flag: '--content-file', description: 'Read body from a file' },
|
|
531
|
+
{ flag: '--parent-id', description: 'Optional parent reply id for nested replies' },
|
|
532
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
533
|
+
],
|
|
534
|
+
examples: [
|
|
535
|
+
'agora reply t-mcp-1 --content "Great point!"',
|
|
536
|
+
'agora reply r-mcp-1-1 --content "Thanks"'
|
|
537
|
+
]
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
name: 'vote',
|
|
541
|
+
group: 'Community',
|
|
542
|
+
summary: 'Upvote or downvote a thread or reply',
|
|
543
|
+
usage: 'agora vote <id> --up|--down [--type discussion|reply] [--json]',
|
|
544
|
+
details: 'Cast a vote on a community item. Requires --api-url and a token.',
|
|
545
|
+
flags: [
|
|
546
|
+
{ flag: '--up', description: 'Upvote' },
|
|
547
|
+
{ flag: '--down', description: 'Downvote' },
|
|
548
|
+
{ flag: '--type', description: 'Target type: discussion or reply (default discussion)' },
|
|
549
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
550
|
+
],
|
|
551
|
+
examples: ['agora vote t-mcp-1 --up', 'agora vote r-mcp-1-1 --down']
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
name: 'admin',
|
|
555
|
+
group: 'Community',
|
|
556
|
+
summary: 'Maintainer-only kill-switch: hide content and view the audit log',
|
|
557
|
+
usage: 'agora admin hide <id> --reason <r> [--type discussion|reply]\n' +
|
|
558
|
+
' agora admin log [--limit 50]',
|
|
559
|
+
details: 'Requires admin privileges (AGORA_ADMIN_USER_IDS on the server). ' +
|
|
560
|
+
'Every hide action is recorded in the kill_switch_log audit table. ' +
|
|
561
|
+
'Use `agora admin log` to list recent entries.',
|
|
562
|
+
flags: [
|
|
563
|
+
{ flag: '--reason', description: 'Reason for hiding content (required for hide)' },
|
|
564
|
+
{ flag: '--type', description: 'Target type: discussion or reply (default discussion)' },
|
|
565
|
+
{ flag: '--limit, -n', description: 'Max log entries to show (default 50)' },
|
|
566
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
567
|
+
],
|
|
568
|
+
examples: [
|
|
569
|
+
'agora admin hide t-mcp-1 --reason "confirmed malware"',
|
|
570
|
+
'agora admin hide r-mcp-1-1 --reason "CSAM" --type reply',
|
|
571
|
+
'agora admin log',
|
|
572
|
+
'agora admin log --limit 20'
|
|
573
|
+
]
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
name: 'flag',
|
|
577
|
+
group: 'Community',
|
|
578
|
+
summary: 'Flag a thread, reply, or marketplace item',
|
|
579
|
+
usage: 'agora flag <id> [--reason spam|harassment|undisclosed-llm|malicious|other] [--type discussion|reply|package|workflow] [--notes <text>] [--json]',
|
|
580
|
+
details: 'Flags content for moderator review. Community items require --api-url and a token. ' +
|
|
581
|
+
'Marketplace items (packages/workflows) can be flagged without API auth.',
|
|
582
|
+
flags: [
|
|
583
|
+
{
|
|
584
|
+
flag: '--reason',
|
|
585
|
+
description: 'Reason: spam, harassment, undisclosed-llm, malicious, other'
|
|
586
|
+
},
|
|
587
|
+
{ flag: '--type', description: 'Target type: discussion, reply, package, workflow' },
|
|
588
|
+
{ flag: '--notes', description: 'Optional notes for moderators' },
|
|
589
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
590
|
+
],
|
|
591
|
+
examples: ['agora flag t-mcp-1 --reason spam', 'agora flag mcp-github --reason malicious']
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
name: 'auth',
|
|
595
|
+
group: 'Community',
|
|
596
|
+
summary: 'Manage Agora API credentials',
|
|
597
|
+
usage: 'agora auth login [--api-url url] [--data-dir path]\n' +
|
|
598
|
+
' agora auth login --token <token> [--api-url url]\n' +
|
|
599
|
+
' agora auth status [--data-dir path] [--json]\n' +
|
|
600
|
+
' agora auth logout [--data-dir path]',
|
|
601
|
+
details: 'Stores or clears API credentials in the Agora state file. ' +
|
|
602
|
+
'Without --token, runs the device-code login flow: opens your browser to ' +
|
|
603
|
+
'authorize via GitHub and returns a short-lived JWT. ' +
|
|
604
|
+
'Pass --token (or set AGORA_TOKEN / AGORA_API_TOKEN) for headless/CI use. ' +
|
|
605
|
+
'Saved credentials are used automatically by write commands.',
|
|
606
|
+
flags: [
|
|
607
|
+
{ flag: '--token', description: 'API auth token (also AGORA_TOKEN / AGORA_API_TOKEN env)' },
|
|
608
|
+
{ flag: '--api-url', description: 'Override AGORA_API_URL for stored auth' },
|
|
609
|
+
{ flag: '--data-dir', description: 'Override the Agora data directory' },
|
|
610
|
+
{ flag: '--json', description: 'Output status as JSON' }
|
|
611
|
+
],
|
|
612
|
+
examples: [
|
|
613
|
+
'agora auth login --api-url https://api.agora.example.com',
|
|
614
|
+
'agora auth login --token $AGORA_TOKEN --api-url https://agora.example.com',
|
|
615
|
+
'agora auth status',
|
|
616
|
+
'agora auth logout'
|
|
617
|
+
]
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
name: 'preferences',
|
|
621
|
+
group: 'Setup',
|
|
622
|
+
summary: 'View or set local preferences',
|
|
623
|
+
usage: 'agora preferences [<key> <value>] [--json]',
|
|
624
|
+
details: 'Preferences are stored locally on disk and work without an account. ' +
|
|
625
|
+
'Keys: theme (dark|light|auto), verbosity (verbose|medium|quiet), ' +
|
|
626
|
+
'username, email, bio.',
|
|
627
|
+
flags: [{ flag: '--json', description: 'Output preferences as JSON' }],
|
|
628
|
+
examples: [
|
|
629
|
+
'agora preferences',
|
|
630
|
+
'agora preferences theme light',
|
|
631
|
+
'agora preferences verbosity quiet',
|
|
632
|
+
'agora preferences username "Jane Doe"'
|
|
633
|
+
]
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
name: 'history',
|
|
637
|
+
group: 'Setup',
|
|
638
|
+
summary: 'View search and chat history',
|
|
639
|
+
usage: 'agora history [--limit N] [--clear] [--json]',
|
|
640
|
+
details: 'Shows recent searches and chat messages. History is stored locally and ' +
|
|
641
|
+
'works offline. Use --clear to erase all history.',
|
|
642
|
+
flags: [
|
|
643
|
+
{ flag: '--limit', description: 'Number of entries to show (default: 50)' },
|
|
644
|
+
{ flag: '--clear', description: 'Clear all history' },
|
|
645
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
646
|
+
],
|
|
647
|
+
examples: ['agora history', 'agora history --limit 10', 'agora history --clear']
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
name: 'completions',
|
|
651
|
+
group: 'Setup',
|
|
652
|
+
summary: 'Generate shell completion scripts for bash, zsh, or fish',
|
|
653
|
+
usage: 'agora completions bash|zsh|fish',
|
|
654
|
+
details: 'Generates shell completion scripts for the agora CLI. Pipe the output to your shell\'s ' +
|
|
655
|
+
'completions directory or source it directly. Completions include all commands, flags, ' +
|
|
656
|
+
'marketplace IDs, categories, and common option values.',
|
|
657
|
+
examples: [
|
|
658
|
+
'agora completions bash > /usr/local/etc/bash_completion.d/agora',
|
|
659
|
+
'agora completions zsh > /usr/local/share/zsh/site-functions/_agora',
|
|
660
|
+
'agora completions fish > ~/.config/fish/completions/agora.fish',
|
|
661
|
+
'eval "$(agora completions bash)"'
|
|
662
|
+
]
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
name: 'shell',
|
|
666
|
+
group: 'Setup',
|
|
667
|
+
summary: 'Start the interactive Agora shell (bash + chat hybrid)',
|
|
668
|
+
usage: 'agora shell [--verbose|--quiet]',
|
|
669
|
+
details: 'Opens an interactive REPL that dispatches between bash and AI chat. ' +
|
|
670
|
+
'Commands found on PATH run as bash; questions and everything else go to AI. ' +
|
|
671
|
+
'Special prefixes: !<cmd> force bash, ?<msg> force chat. ' +
|
|
672
|
+
'Type /help to see all meta commands. History is persisted across sessions. ' +
|
|
673
|
+
'Shell meta-commands: /env to view or set tracked environment variables.',
|
|
674
|
+
flags: [
|
|
675
|
+
{ flag: '--verbose', description: 'Detailed AI responses' },
|
|
676
|
+
{ flag: '--quiet', description: 'Minimal AI responses' }
|
|
677
|
+
],
|
|
678
|
+
examples: ['agora shell']
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
name: 'export',
|
|
682
|
+
group: 'Marketplace',
|
|
683
|
+
summary: 'Export marketplace data in various formats',
|
|
684
|
+
usage: 'agora export [query] [--category all|mcp|prompt|workflow] [--format json|csv|markdown|table] [--limit N] [--api]',
|
|
685
|
+
details: 'Exports all marketplace items matching the optional query and category filters. ' +
|
|
686
|
+
'Use --format to choose the output format. ' +
|
|
687
|
+
'Add --api to query the live Agora API instead of the bundled offline data.',
|
|
688
|
+
flags: [
|
|
689
|
+
{ flag: '--format, -f', description: 'Output format: json (default), csv, markdown, table' },
|
|
690
|
+
{ flag: '--category, -c', description: 'Filter by category: all, mcp, prompt, workflow' },
|
|
691
|
+
{ flag: '--limit, -n', description: 'Maximum items to export' },
|
|
692
|
+
{ flag: '--api', description: 'Query the live Agora API' },
|
|
693
|
+
{ flag: '--json', description: 'Alias for --format json' }
|
|
694
|
+
],
|
|
695
|
+
examples: [
|
|
696
|
+
'agora export',
|
|
697
|
+
'agora export --format csv',
|
|
698
|
+
'agora export --format markdown',
|
|
699
|
+
'agora export --category mcp --limit 20'
|
|
700
|
+
]
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
name: 'watch',
|
|
704
|
+
group: 'Marketplace',
|
|
705
|
+
summary: 'Repeat a command at a regular interval (like UNIX watch)',
|
|
706
|
+
usage: 'agora watch <interval> <command...> [--count N] [--once]',
|
|
707
|
+
details: 'Repeatedly runs an agora command at the given interval in seconds. ' +
|
|
708
|
+
'Clears the screen between runs. Use --count to limit the number of iterations. ' +
|
|
709
|
+
'Example: agora watch 5 agora trending watches trending every 5 seconds.',
|
|
710
|
+
flags: [
|
|
711
|
+
{ flag: '--count, -n', description: 'Stop after N iterations' },
|
|
712
|
+
{ flag: '--once', description: 'Run once and exit' }
|
|
713
|
+
],
|
|
714
|
+
examples: [
|
|
715
|
+
'agora watch 5 agora trending',
|
|
716
|
+
'agora watch 10 agora search filesystem',
|
|
717
|
+
'agora watch 30 agora news --count 3'
|
|
718
|
+
]
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
name: 'open',
|
|
722
|
+
group: 'Marketplace',
|
|
723
|
+
summary: 'Open a marketplace item or URL in the browser',
|
|
724
|
+
usage: 'agora open <id|url> [--print] [--json]',
|
|
725
|
+
details: 'Resolves the item by id and opens its repository or npm page in the default browser. ' +
|
|
726
|
+
'Pass a full URL to open it directly. Use --print to print the URL without opening.',
|
|
727
|
+
flags: [
|
|
728
|
+
{ flag: '--print', description: 'Print the URL instead of opening the browser' },
|
|
729
|
+
{ flag: '--json', description: 'Output { id, url, opened } as JSON' }
|
|
730
|
+
],
|
|
731
|
+
examples: [
|
|
732
|
+
'agora open mcp-github',
|
|
733
|
+
'agora open mcp-github --print',
|
|
734
|
+
'agora open https://github.com/modelcontextprotocol/servers'
|
|
735
|
+
]
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
name: 'share',
|
|
739
|
+
group: 'Marketplace',
|
|
740
|
+
summary: 'Print a shareable markdown snippet for a marketplace item',
|
|
741
|
+
usage: 'agora share <id> [--json]',
|
|
742
|
+
details: 'Produces a markdown blurb with the item name, description, link, tags, and install ' +
|
|
743
|
+
'command — paste-ready for a community post, README, or chat message.',
|
|
744
|
+
flags: [{ flag: '--json', description: 'Output { id, name, link, snippet } as JSON' }],
|
|
745
|
+
examples: ['agora share mcp-github', 'agora share mcp-filesystem --json']
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
name: 'author',
|
|
749
|
+
group: 'Marketplace',
|
|
750
|
+
summary: 'List marketplace items by a specific author',
|
|
751
|
+
usage: 'agora author <name> [--limit 25] [--page 1] [--json]',
|
|
752
|
+
details: 'Lists all items where the author matches the given name (case-insensitive). ' +
|
|
753
|
+
'Tries exact match first, then substring. Results are sorted by installs descending.',
|
|
754
|
+
flags: [
|
|
755
|
+
{ flag: '--limit, -n', description: 'Items per page (default 25)' },
|
|
756
|
+
{ flag: '--page, -p', description: 'Page number (default 1)' },
|
|
757
|
+
{ flag: '--json', description: 'Output { author, count, items } as JSON' }
|
|
758
|
+
],
|
|
759
|
+
examples: [
|
|
760
|
+
'agora author "Anthropic, PBC"',
|
|
761
|
+
'agora author anthropic --json',
|
|
762
|
+
'agora author github --limit 10'
|
|
763
|
+
]
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
name: 'ping',
|
|
767
|
+
group: 'Setup',
|
|
768
|
+
summary: 'Check the configured backend is reachable',
|
|
769
|
+
usage: 'agora ping [--api-url <url>] [--json]',
|
|
770
|
+
details: 'Sends a GET /api/community/boards to the configured backend and reports the HTTP ' +
|
|
771
|
+
'status, response time, and whether the request was authenticated. Picks the URL ' +
|
|
772
|
+
'from --api-url, AGORA_API_URL, or the persisted auth state in that order.',
|
|
773
|
+
flags: [
|
|
774
|
+
{ flag: '--api-url <url>', description: 'Override the backend URL' },
|
|
775
|
+
{ flag: '--json', description: 'Output { apiUrl, status, okBoards, durationMs } as JSON' }
|
|
776
|
+
],
|
|
777
|
+
examples: ['agora ping', 'agora ping --api-url https://api.agora.example', 'agora ping --json']
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
name: 'bookmarks',
|
|
781
|
+
group: 'Library',
|
|
782
|
+
summary: 'View all bookmarked marketplace items and news',
|
|
783
|
+
usage: 'agora bookmarks [--kind marketplace|news|all] [--data-dir path] [--json]',
|
|
784
|
+
details: 'Shows saved marketplace items and saved news stories in two sections. ' +
|
|
785
|
+
'Use --kind to filter to one section. News bookmarks are set in the TUI news page.',
|
|
786
|
+
flags: [
|
|
787
|
+
{ flag: '--kind', description: 'Filter: marketplace, news, or all (default all)' },
|
|
788
|
+
{ flag: '--data-dir', description: 'Override the Agora data directory' },
|
|
789
|
+
{ flag: '--json', description: 'Output { marketplace, news } as JSON' }
|
|
790
|
+
],
|
|
791
|
+
examples: [
|
|
792
|
+
'agora bookmarks',
|
|
793
|
+
'agora bookmarks --kind marketplace',
|
|
794
|
+
'agora bookmarks --json'
|
|
795
|
+
]
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
name: 'welcome',
|
|
799
|
+
group: 'Setup',
|
|
800
|
+
summary: 'Show a guided onboarding tour of the agora CLI',
|
|
801
|
+
usage: 'agora welcome [--json]',
|
|
802
|
+
details: 'Displays a six-section guide covering sign-in, the marketplace, news, community, ' +
|
|
803
|
+
'shell completions, and scaffolding an MCP project. ' +
|
|
804
|
+
'Step 1 adapts to show your profile commands when you are already signed in. ' +
|
|
805
|
+
'Use --json to get a machine-readable list of steps.',
|
|
806
|
+
flags: [{ flag: '--json', description: 'Output { signedIn, username?, steps } as JSON' }],
|
|
807
|
+
examples: ['agora welcome', 'agora welcome --json']
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
name: 'notify',
|
|
811
|
+
group: 'Setup',
|
|
812
|
+
summary: 'Send a desktop notification via macOS, Linux, or Windows',
|
|
813
|
+
usage: 'agora notify <message> [--title "Agora"] [--sound] [--json]',
|
|
814
|
+
details: 'Sends a native desktop notification. Uses osascript on macOS, notify-send on Linux, ' +
|
|
815
|
+
'and PowerShell toast notifications on Windows.',
|
|
816
|
+
flags: [
|
|
817
|
+
{ flag: '--title, -t', description: 'Notification title (default: Agora)' },
|
|
818
|
+
{ flag: '--sound', description: 'Play notification sound' },
|
|
819
|
+
{ flag: '--json', description: 'Output as JSON' }
|
|
820
|
+
],
|
|
821
|
+
examples: [
|
|
822
|
+
'agora notify "Install complete"',
|
|
823
|
+
'agora notify "Deploy finished" --title "CI" --sound',
|
|
824
|
+
'agora watch 60 agora news --count 1 && agora notify "News updated"'
|
|
825
|
+
]
|
|
826
|
+
}
|
|
827
|
+
];
|
|
828
|
+
//# sourceMappingURL=commands-meta.js.map
|