opencode-agora 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +217 -52
  2. package/dist/cli/app.d.ts +3 -0
  3. package/dist/cli/app.d.ts.map +1 -1
  4. package/dist/cli/app.js +1202 -227
  5. package/dist/cli/app.js.map +1 -1
  6. package/dist/cli/chat-renderer.d.ts +31 -0
  7. package/dist/cli/chat-renderer.d.ts.map +1 -0
  8. package/dist/cli/chat-renderer.js +275 -0
  9. package/dist/cli/chat-renderer.js.map +1 -0
  10. package/dist/cli/commands-meta.d.ts +21 -0
  11. package/dist/cli/commands-meta.d.ts.map +1 -0
  12. package/dist/cli/commands-meta.js +600 -0
  13. package/dist/cli/commands-meta.js.map +1 -0
  14. package/dist/cli/completions.d.ts +18 -0
  15. package/dist/cli/completions.d.ts.map +1 -0
  16. package/dist/cli/completions.js +190 -0
  17. package/dist/cli/completions.js.map +1 -0
  18. package/dist/cli/mcp-server.d.ts +4 -0
  19. package/dist/cli/mcp-server.d.ts.map +1 -0
  20. package/dist/cli/mcp-server.js +277 -0
  21. package/dist/cli/mcp-server.js.map +1 -0
  22. package/dist/cli/menu.d.ts +7 -0
  23. package/dist/cli/menu.d.ts.map +1 -0
  24. package/dist/cli/menu.js +164 -0
  25. package/dist/cli/menu.js.map +1 -0
  26. package/dist/cli/pages/community.d.ts +3 -0
  27. package/dist/cli/pages/community.d.ts.map +1 -0
  28. package/dist/cli/pages/community.js +276 -0
  29. package/dist/cli/pages/community.js.map +1 -0
  30. package/dist/cli/pages/helpers.d.ts +32 -0
  31. package/dist/cli/pages/helpers.d.ts.map +1 -0
  32. package/dist/cli/pages/helpers.js +67 -0
  33. package/dist/cli/pages/helpers.js.map +1 -0
  34. package/dist/cli/pages/home.d.ts +3 -0
  35. package/dist/cli/pages/home.d.ts.map +1 -0
  36. package/dist/cli/pages/home.js +148 -0
  37. package/dist/cli/pages/home.js.map +1 -0
  38. package/dist/cli/pages/marketplace.d.ts +3 -0
  39. package/dist/cli/pages/marketplace.d.ts.map +1 -0
  40. package/dist/cli/pages/marketplace.js +179 -0
  41. package/dist/cli/pages/marketplace.js.map +1 -0
  42. package/dist/cli/pages/news.d.ts +3 -0
  43. package/dist/cli/pages/news.d.ts.map +1 -0
  44. package/dist/cli/pages/news.js +561 -0
  45. package/dist/cli/pages/news.js.map +1 -0
  46. package/dist/cli/pages/settings.d.ts +3 -0
  47. package/dist/cli/pages/settings.d.ts.map +1 -0
  48. package/dist/cli/pages/settings.js +166 -0
  49. package/dist/cli/pages/settings.js.map +1 -0
  50. package/dist/cli/pages/types.d.ts +67 -0
  51. package/dist/cli/pages/types.d.ts.map +1 -0
  52. package/dist/cli/pages/types.js +2 -0
  53. package/dist/cli/pages/types.js.map +1 -0
  54. package/dist/cli/prompter.d.ts +135 -0
  55. package/dist/cli/prompter.d.ts.map +1 -0
  56. package/dist/cli/prompter.js +675 -0
  57. package/dist/cli/prompter.js.map +1 -0
  58. package/dist/cli/shell.d.ts +23 -0
  59. package/dist/cli/shell.d.ts.map +1 -0
  60. package/dist/cli/shell.js +819 -0
  61. package/dist/cli/shell.js.map +1 -0
  62. package/dist/cli/tui.d.ts +7 -0
  63. package/dist/cli/tui.d.ts.map +1 -0
  64. package/dist/cli/tui.js +373 -0
  65. package/dist/cli/tui.js.map +1 -0
  66. package/dist/cli.js +1 -1
  67. package/dist/cli.js.map +1 -1
  68. package/dist/commands.d.ts +14 -0
  69. package/dist/commands.d.ts.map +1 -0
  70. package/dist/commands.js +28 -0
  71. package/dist/commands.js.map +1 -0
  72. package/dist/community/client.d.ts +47 -0
  73. package/dist/community/client.d.ts.map +1 -0
  74. package/dist/community/client.js +245 -0
  75. package/dist/community/client.js.map +1 -0
  76. package/dist/community/types.d.ts +50 -0
  77. package/dist/community/types.d.ts.map +1 -0
  78. package/dist/community/types.js +11 -0
  79. package/dist/community/types.js.map +1 -0
  80. package/dist/config-files.d.ts.map +1 -1
  81. package/dist/config-files.js +11 -8
  82. package/dist/config-files.js.map +1 -1
  83. package/dist/config.d.ts +8 -8
  84. package/dist/config.d.ts.map +1 -1
  85. package/dist/config.js +16 -27
  86. package/dist/config.js.map +1 -1
  87. package/dist/data.d.ts +1 -1
  88. package/dist/data.d.ts.map +1 -1
  89. package/dist/data.js +1013 -545
  90. package/dist/data.js.map +1 -1
  91. package/dist/format.d.ts +5 -39
  92. package/dist/format.d.ts.map +1 -1
  93. package/dist/format.js +5 -118
  94. package/dist/format.js.map +1 -1
  95. package/dist/history.d.ts +13 -0
  96. package/dist/history.d.ts.map +1 -0
  97. package/dist/history.js +37 -0
  98. package/dist/history.js.map +1 -0
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +151 -236
  101. package/dist/index.js.map +1 -1
  102. package/dist/init.d.ts +4 -1
  103. package/dist/init.d.ts.map +1 -1
  104. package/dist/init.js +103 -51
  105. package/dist/init.js.map +1 -1
  106. package/dist/live.d.ts +4 -0
  107. package/dist/live.d.ts.map +1 -1
  108. package/dist/live.js +87 -19
  109. package/dist/live.js.map +1 -1
  110. package/dist/marketplace.d.ts +9 -0
  111. package/dist/marketplace.d.ts.map +1 -1
  112. package/dist/marketplace.js +128 -33
  113. package/dist/marketplace.js.map +1 -1
  114. package/dist/news/cache.d.ts +13 -0
  115. package/dist/news/cache.d.ts.map +1 -0
  116. package/dist/news/cache.js +65 -0
  117. package/dist/news/cache.js.map +1 -0
  118. package/dist/news/score.d.ts +4 -0
  119. package/dist/news/score.d.ts.map +1 -0
  120. package/dist/news/score.js +43 -0
  121. package/dist/news/score.js.map +1 -0
  122. package/dist/news/sources/arxiv.d.ts +9 -0
  123. package/dist/news/sources/arxiv.d.ts.map +1 -0
  124. package/dist/news/sources/arxiv.js +103 -0
  125. package/dist/news/sources/arxiv.js.map +1 -0
  126. package/dist/news/sources/github-trending.d.ts +9 -0
  127. package/dist/news/sources/github-trending.d.ts.map +1 -0
  128. package/dist/news/sources/github-trending.js +93 -0
  129. package/dist/news/sources/github-trending.js.map +1 -0
  130. package/dist/news/sources/hn.d.ts +9 -0
  131. package/dist/news/sources/hn.d.ts.map +1 -0
  132. package/dist/news/sources/hn.js +53 -0
  133. package/dist/news/sources/hn.js.map +1 -0
  134. package/dist/news/sources/reddit.d.ts +9 -0
  135. package/dist/news/sources/reddit.d.ts.map +1 -0
  136. package/dist/news/sources/reddit.js +68 -0
  137. package/dist/news/sources/reddit.js.map +1 -0
  138. package/dist/news/sources/rss.d.ts +14 -0
  139. package/dist/news/sources/rss.d.ts.map +1 -0
  140. package/dist/news/sources/rss.js +102 -0
  141. package/dist/news/sources/rss.js.map +1 -0
  142. package/dist/news/types.d.ts +39 -0
  143. package/dist/news/types.d.ts.map +1 -0
  144. package/dist/news/types.js +47 -0
  145. package/dist/news/types.js.map +1 -0
  146. package/dist/preferences.d.ts +14 -0
  147. package/dist/preferences.d.ts.map +1 -0
  148. package/dist/preferences.js +31 -0
  149. package/dist/preferences.js.map +1 -0
  150. package/dist/settings.d.ts +26 -0
  151. package/dist/settings.d.ts.map +1 -0
  152. package/dist/settings.js +257 -0
  153. package/dist/settings.js.map +1 -0
  154. package/dist/state.d.ts.map +1 -1
  155. package/dist/state.js +7 -6
  156. package/dist/state.js.map +1 -1
  157. package/dist/transcript.d.ts +28 -0
  158. package/dist/transcript.d.ts.map +1 -0
  159. package/dist/transcript.js +79 -0
  160. package/dist/transcript.js.map +1 -0
  161. package/dist/types.d.ts +6 -1
  162. package/dist/types.d.ts.map +1 -1
  163. package/dist/ui.d.ts +157 -0
  164. package/dist/ui.d.ts.map +1 -0
  165. package/dist/ui.js +296 -0
  166. package/dist/ui.js.map +1 -0
  167. package/package.json +21 -10
  168. package/dist/api.d.ts +0 -69
  169. package/dist/api.d.ts.map +0 -1
  170. package/dist/api.js +0 -109
  171. package/dist/api.js.map +0 -1
  172. package/dist/logger.d.ts +0 -20
  173. package/dist/logger.d.ts.map +0 -1
  174. package/dist/logger.js +0 -59
  175. package/dist/logger.js.map +0 -1
@@ -0,0 +1,600 @@
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',
176
+ usage: 'agora init [--dry-run] [--json] [--mcp]',
177
+ details: '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.',
179
+ flags: [
180
+ { flag: '--dry-run', description: 'Preview what would be written without applying changes' },
181
+ { flag: '--json', description: 'Output the generated config as JSON' },
182
+ { flag: '--mcp', description: 'Also register the Agora MCP server in the config' }
183
+ ],
184
+ examples: ['agora init', 'agora init --dry-run', 'agora init --mcp']
185
+ },
186
+ {
187
+ name: 'use',
188
+ group: 'Setup',
189
+ summary: 'Apply a workflow template as an OpenCode skill',
190
+ usage: 'agora use <workflow-id> [--json]',
191
+ details: 'Copies a workflow from the marketplace into .opencode/skills/ and registers it in opencode.json ' +
192
+ 'so OpenCode can load it on the next restart.',
193
+ flags: [{ flag: '--json', description: 'Output result as JSON' }],
194
+ examples: ['agora use wf-tdd-cycle', 'agora use wf-security-audit']
195
+ },
196
+ {
197
+ name: 'menu',
198
+ group: 'Setup',
199
+ summary: 'Browse commands interactively (the old menu)',
200
+ usage: 'agora menu',
201
+ details: 'Opens the interactive command browser powered by @clack/prompts.',
202
+ examples: ['agora menu']
203
+ },
204
+ {
205
+ name: 'tui',
206
+ group: 'Setup',
207
+ summary: 'Open the full-screen Agora TUI (Home · Market · Comm · News · Settings)',
208
+ usage: 'agora tui',
209
+ details: 'Opens the keyboard-driven TUI with five pages, switched by 1-5 or Tab. ' +
210
+ "j/k navigates, Enter drills in, Esc backs out, ? toggles help, q quits. " +
211
+ 'Pages: Home (recommendation engine), Marketplace (browse + install preview), ' +
212
+ 'Community (boards/threads/reader against fixtures until backend lands), ' +
213
+ 'News (ranked feed against fixtures until news adapters land), ' +
214
+ 'Settings (account, display, news sources, community defaults).',
215
+ examples: ['agora tui']
216
+ },
217
+ {
218
+ name: 'config',
219
+ group: 'Setup',
220
+ summary: 'Inspect or validate your OpenCode configuration',
221
+ usage: 'agora config doctor [--config path] [--json]',
222
+ details: 'Runs a health-check on opencode.json: reports path, validity, MCP server count, and registered plugins.',
223
+ flags: [
224
+ { flag: '--config', description: 'Explicit path to opencode.json' },
225
+ { flag: '--json', description: 'Output report as JSON' }
226
+ ],
227
+ examples: ['agora config doctor', 'agora config doctor --config ./opencode.json --json']
228
+ },
229
+ // Library
230
+ {
231
+ name: 'save',
232
+ group: 'Library',
233
+ summary: 'Save a marketplace item to your local library',
234
+ usage: 'agora save <id> [--data-dir path] [--json]',
235
+ details: 'Persists a package or workflow reference in the Agora state file so you can recall it later ' +
236
+ 'with `agora saved`.',
237
+ flags: [
238
+ { flag: '--data-dir', description: 'Override the Agora data directory' },
239
+ { flag: '--type, -t', description: 'Item kind: package or workflow' },
240
+ { flag: '--json', description: 'Output result as JSON' }
241
+ ],
242
+ examples: ['agora save wf-security-audit', 'agora save mcp-github --data-dir ~/.agora']
243
+ },
244
+ {
245
+ name: 'saved',
246
+ group: 'Library',
247
+ summary: 'List saved marketplace items',
248
+ usage: 'agora saved [query] [--data-dir path] [--json]',
249
+ details: 'Shows all items in your local library. Provide a keyword to filter the list.',
250
+ flags: [
251
+ { flag: '--data-dir', description: 'Override the Agora data directory' },
252
+ { flag: '--json', description: 'Output list as JSON' }
253
+ ],
254
+ examples: ['agora saved', 'agora saved github', 'agora saved --json']
255
+ },
256
+ {
257
+ name: 'remove',
258
+ group: 'Library',
259
+ summary: 'Remove an item from your saved library',
260
+ usage: 'agora remove <id> [--data-dir path] [--json]',
261
+ details: 'Deletes a saved item from the Agora state file by its id.',
262
+ flags: [
263
+ { flag: '--data-dir', description: 'Override the Agora data directory' },
264
+ { flag: '--json', description: 'Output result as JSON' }
265
+ ],
266
+ examples: ['agora remove wf-security-audit', 'agora remove mcp-github']
267
+ },
268
+ // Learn
269
+ {
270
+ name: 'tutorials',
271
+ group: 'Learn',
272
+ summary: 'List available step-by-step tutorials',
273
+ usage: 'agora tutorials [query] [--level beginner|intermediate|advanced] [--limit 20] [--json]',
274
+ details: 'Browses the tutorial catalog. Filter by keyword and skill level. ' +
275
+ 'Use `agora tutorial <id>` to start a specific tutorial.',
276
+ flags: [
277
+ { flag: '--level', description: 'Skill level: beginner, intermediate, or advanced' },
278
+ { flag: '--limit, -n', description: 'Maximum number of results (default 20)' },
279
+ { flag: '--json', description: 'Output as JSON' }
280
+ ],
281
+ examples: ['agora tutorials', 'agora tutorials mcp', 'agora tutorials --level beginner']
282
+ },
283
+ {
284
+ name: 'tutorial',
285
+ group: 'Learn',
286
+ summary: 'Read a tutorial step-by-step',
287
+ usage: 'agora tutorial <id> [step] [--json]',
288
+ details: 'Displays a single tutorial step. Omit the step number to start from step 1. ' +
289
+ 'Increment the step number to advance through the tutorial.',
290
+ flags: [
291
+ { flag: '--step', description: 'Step number to display (default 1)' },
292
+ { flag: '--json', description: 'Output step as JSON' }
293
+ ],
294
+ examples: [
295
+ 'agora tutorial tut-mcp-basics',
296
+ 'agora tutorial tut-mcp-basics 2',
297
+ 'agora tutorial tut-mcp-basics --json'
298
+ ]
299
+ },
300
+ // Community
301
+ {
302
+ name: 'discuss',
303
+ group: 'Community',
304
+ summary: 'Post a new community discussion',
305
+ usage: 'agora discuss --title <title> (--content <text>|--content-file path) [--category question|idea|showcase|discussion]',
306
+ details: 'Creates a new discussion thread via the Agora API. Requires --api-url and a token ' +
307
+ '(via --token, AGORA_TOKEN, or `agora auth login`).',
308
+ flags: [
309
+ { flag: '--title', description: 'Discussion title (required)' },
310
+ { flag: '--content', description: 'Discussion body as inline text' },
311
+ { flag: '--content-file', description: 'Read discussion body from a file' },
312
+ {
313
+ flag: '--category, -c',
314
+ description: 'Category: question, idea, showcase, discussion (default discussion)'
315
+ },
316
+ { flag: '--json', description: 'Output created discussion as JSON' }
317
+ ],
318
+ examples: [
319
+ 'agora discuss --title "MCP question" --content "How are you composing servers?" --category question',
320
+ 'agora discuss --title "My workflow" --content-file ./prompt.md --category showcase'
321
+ ]
322
+ },
323
+ {
324
+ name: 'discussions',
325
+ group: 'Community',
326
+ summary: 'Browse community discussions',
327
+ usage: 'agora discussions [query] [--category question|idea|showcase|discussion] [--json]',
328
+ details: 'Lists community discussion threads from the Agora API. Requires --api-url. ' +
329
+ 'Filter by keyword or category.',
330
+ flags: [
331
+ {
332
+ flag: '--category, -c',
333
+ description: 'Category filter: question, idea, showcase, or discussion'
334
+ },
335
+ { flag: '--json', description: 'Output as JSON' }
336
+ ],
337
+ examples: [
338
+ 'agora discussions',
339
+ 'agora discussions --category question',
340
+ 'agora discussions mcp --json'
341
+ ]
342
+ },
343
+ {
344
+ name: 'review',
345
+ group: 'Community',
346
+ summary: 'Post a rating and review for a marketplace item',
347
+ usage: 'agora review <id> --rating 5 --content <text>',
348
+ details: 'Submits a review to the Agora API. Requires --api-url and a token ' +
349
+ '(via --token, AGORA_TOKEN, or `agora auth login`). Rating must be 1–5.',
350
+ flags: [
351
+ { flag: '--rating, -r', description: 'Star rating 1–5 (required)' },
352
+ { flag: '--content', description: 'Review text (required)' },
353
+ { flag: '--type, -t', description: 'Item kind: package or workflow (auto-detected)' },
354
+ { flag: '--json', description: 'Output created review as JSON' }
355
+ ],
356
+ examples: [
357
+ 'agora review mcp-github --rating 5 --content "Works well"',
358
+ 'agora review wf-security-audit --rating 4 --content "Solid workflow" --type workflow'
359
+ ]
360
+ },
361
+ {
362
+ name: 'reviews',
363
+ group: 'Community',
364
+ summary: 'List reviews for a marketplace item',
365
+ usage: 'agora reviews [id] [--type package|workflow] [--api-url url] [--json]',
366
+ details: 'Fetches reviews from the Agora API. Requires --api-url. ' +
367
+ 'Omit the id to list all recent reviews.',
368
+ flags: [
369
+ { flag: '--type, -t', description: 'Item kind: package or workflow' },
370
+ { flag: '--json', description: 'Output as JSON' }
371
+ ],
372
+ examples: [
373
+ 'agora reviews mcp-github --api-url https://agora.example.com',
374
+ 'agora reviews --json'
375
+ ]
376
+ },
377
+ {
378
+ name: 'profile',
379
+ group: 'Community',
380
+ summary: 'View a community member profile',
381
+ usage: 'agora profile <username> [--json]',
382
+ details: 'Retrieves a user profile from the Agora API. Requires --api-url. ' +
383
+ 'Displays packages, workflows, and discussion counts.',
384
+ flags: [
385
+ { flag: '--username', description: 'Username (alternative to positional argument)' },
386
+ { flag: '--json', description: 'Output as JSON' }
387
+ ],
388
+ examples: ['agora profile alice', 'agora profile alice --api-url https://agora.example.com']
389
+ },
390
+ {
391
+ name: 'publish',
392
+ group: 'Community',
393
+ summary: 'Publish a package or workflow to the marketplace',
394
+ usage: 'agora publish package --name <name> --description <text> --npm <package> [--token token]\n' +
395
+ ' agora publish workflow --name <name> --description <text> --prompt-file <path> [--token token]',
396
+ details: 'Submits a new package or workflow to the Agora API. Requires --api-url and a token ' +
397
+ '(via --token, AGORA_TOKEN, or `agora auth login`).',
398
+ flags: [
399
+ { flag: '--name', description: 'Item name (required)' },
400
+ { flag: '--description, -d', description: 'Short description (required)' },
401
+ { flag: '--npm', description: 'npm package name (required for MCP packages)' },
402
+ {
403
+ flag: '--prompt-file',
404
+ description: 'Path to workflow prompt file (required for workflows)'
405
+ },
406
+ { flag: '--prompt', description: 'Workflow prompt as inline text' },
407
+ { flag: '--version', description: 'Package version (default 1.0.0)' },
408
+ { flag: '--category, -c', description: 'Category (default mcp)' },
409
+ { flag: '--tags', description: 'Comma-separated tags' },
410
+ { flag: '--repo, --repository', description: 'Repository URL' },
411
+ { flag: '--model', description: 'Preferred model for workflow' },
412
+ { flag: '--json', description: 'Output published item as JSON' }
413
+ ],
414
+ examples: [
415
+ 'agora publish package --name @you/server --description "MCP server" --npm @you/server',
416
+ 'agora publish workflow --name "My Workflow" --description "Review workflow" --prompt-file ./prompt.md'
417
+ ]
418
+ },
419
+ {
420
+ name: 'news',
421
+ group: 'Marketplace',
422
+ summary: 'Browse ranked tech news from HN, Reddit, GitHub, arXiv',
423
+ usage: 'agora news [query] [--source hn|reddit|gh|arxiv] [--limit 20] [--refresh] [--json]',
424
+ details: 'Fetches and ranks news stories from multiple sources using a recency-engagement-topic scoring algorithm. ' +
425
+ 'Cached locally in ~/.config/agora/news-cache.jsonl. ' +
426
+ 'Use --refresh to force re-fetch; --source to filter by source; a positional query to search titles and tags.',
427
+ flags: [
428
+ { flag: '--source, -s', description: 'Source filter: hn, reddit, gh, arxiv' },
429
+ { flag: '--limit, -n', description: 'Maximum number of results (default 20)' },
430
+ { flag: '--refresh', description: 'Force re-fetch all enabled sources' },
431
+ { flag: '--json', description: 'Output as JSON' }
432
+ ],
433
+ examples: [
434
+ 'agora news',
435
+ 'agora news mcp',
436
+ 'agora news --source hn --limit 5',
437
+ 'agora news --refresh'
438
+ ]
439
+ },
440
+ {
441
+ name: 'community',
442
+ group: 'Community',
443
+ summary: 'Browse community boards and threads',
444
+ usage: 'agora community [board] [--sort top|new|active] [--json]',
445
+ details: 'Without a board, lists all available boards with thread counts. ' +
446
+ 'With a board (e.g. mcp, agents), lists threads in that board sorted by activity. ' +
447
+ 'Use `agora thread <id>` to read a specific thread.',
448
+ flags: [
449
+ { flag: '--sort', description: 'Sort order: top, new, active (default active)' },
450
+ { flag: '--json', description: 'Output as JSON' }
451
+ ],
452
+ examples: [
453
+ 'agora community',
454
+ 'agora community mcp',
455
+ 'agora community agents --sort top'
456
+ ]
457
+ },
458
+ {
459
+ name: 'thread',
460
+ group: 'Community',
461
+ summary: 'Read a community thread with replies',
462
+ usage: 'agora thread <id> [--json]',
463
+ details: 'Displays a full thread with its reply tree.',
464
+ flags: [{ flag: '--json', description: 'Output as JSON' }],
465
+ examples: ['agora thread t-mcp-1']
466
+ },
467
+ {
468
+ name: 'post',
469
+ group: 'Community',
470
+ summary: 'Create a new community thread',
471
+ usage: 'agora post --board <board> --title <title> (--content <text>|--content-file <path>) [--json]',
472
+ details: 'Posts a new thread to a community board. Requires --api-url and a token ' +
473
+ '(via --token, AGORA_TOKEN, or `agora auth login`). ' +
474
+ 'Boards: mcp, agents, tools, workflows, show, ask, meta.',
475
+ flags: [
476
+ { flag: '--board, -b', description: 'Target board (required)' },
477
+ { flag: '--title', description: 'Thread title (required)' },
478
+ { flag: '--content', description: 'Thread body as inline text' },
479
+ { flag: '--content-file', description: 'Read body from a file' },
480
+ { flag: '--json', description: 'Output created thread as JSON' }
481
+ ],
482
+ examples: [
483
+ 'agora post --board mcp --title "My question" --content "How do I?"',
484
+ 'agora post --board show --title "My project" --content-file ./readme.md'
485
+ ]
486
+ },
487
+ {
488
+ name: 'reply',
489
+ group: 'Community',
490
+ summary: 'Reply to a thread or another reply',
491
+ usage: 'agora reply <id> (--content <text>|--content-file <path>) [--parent-id <id>] [--json]',
492
+ details: 'Posts a reply to an existing thread or reply. ' +
493
+ 'Requires --api-url and a token.',
494
+ flags: [
495
+ { flag: '--content', description: 'Reply body as inline text' },
496
+ { flag: '--content-file', description: 'Read body from a file' },
497
+ { flag: '--parent-id', description: 'Optional parent reply id for nested replies' },
498
+ { flag: '--json', description: 'Output as JSON' }
499
+ ],
500
+ examples: [
501
+ 'agora reply t-mcp-1 --content "Great point!"',
502
+ 'agora reply r-mcp-1-1 --content "Thanks"'
503
+ ]
504
+ },
505
+ {
506
+ name: 'vote',
507
+ group: 'Community',
508
+ summary: 'Upvote or downvote a thread or reply',
509
+ usage: 'agora vote <id> --up|--down [--type discussion|reply] [--json]',
510
+ details: 'Cast a vote on a community item. Requires --api-url and a token.',
511
+ flags: [
512
+ { flag: '--up', description: 'Upvote' },
513
+ { flag: '--down', description: 'Downvote' },
514
+ { flag: '--type', description: 'Target type: discussion or reply (default discussion)' },
515
+ { flag: '--json', description: 'Output as JSON' }
516
+ ],
517
+ examples: ['agora vote t-mcp-1 --up', 'agora vote r-mcp-1-1 --down']
518
+ },
519
+ {
520
+ name: 'flag',
521
+ group: 'Community',
522
+ summary: 'Flag a thread, reply, or marketplace item',
523
+ usage: 'agora flag <id> [--reason spam|harassment|undisclosed-llm|malicious|other] [--type discussion|reply|package|workflow] [--notes <text>] [--json]',
524
+ details: 'Flags content for moderator review. Community items require --api-url and a token. ' +
525
+ 'Marketplace items (packages/workflows) can be flagged without API auth.',
526
+ flags: [
527
+ { flag: '--reason', description: 'Reason: spam, harassment, undisclosed-llm, malicious, other' },
528
+ { flag: '--type', description: 'Target type: discussion, reply, package, workflow' },
529
+ { flag: '--notes', description: 'Optional notes for moderators' },
530
+ { flag: '--json', description: 'Output as JSON' }
531
+ ],
532
+ examples: [
533
+ 'agora flag t-mcp-1 --reason spam',
534
+ 'agora flag mcp-github --reason malicious'
535
+ ]
536
+ },
537
+ {
538
+ name: 'auth',
539
+ group: 'Community',
540
+ summary: 'Manage Agora API credentials',
541
+ usage: 'agora auth login [--api-url url] [--data-dir path]\n' +
542
+ ' agora auth login --token <token> [--api-url url]\n' +
543
+ ' agora auth status [--data-dir path] [--json]\n' +
544
+ ' agora auth logout [--data-dir path]',
545
+ details: 'Stores or clears API credentials in the Agora state file. ' +
546
+ 'Without --token, runs the device-code login flow: opens your browser to ' +
547
+ 'authorize via GitHub and returns a short-lived JWT. ' +
548
+ 'Pass --token (or set AGORA_TOKEN / AGORA_API_TOKEN) for headless/CI use. ' +
549
+ 'Saved credentials are used automatically by write commands.',
550
+ flags: [
551
+ { flag: '--token', description: 'API auth token (also AGORA_TOKEN / AGORA_API_TOKEN env)' },
552
+ { flag: '--api-url', description: 'Override AGORA_API_URL for stored auth' },
553
+ { flag: '--data-dir', description: 'Override the Agora data directory' },
554
+ { flag: '--json', description: 'Output status as JSON' }
555
+ ],
556
+ examples: [
557
+ 'agora auth login --api-url https://api.agora.example.com',
558
+ 'agora auth login --token $AGORA_TOKEN --api-url https://agora.example.com',
559
+ 'agora auth status',
560
+ 'agora auth logout'
561
+ ]
562
+ },
563
+ {
564
+ name: 'preferences',
565
+ group: 'Setup',
566
+ summary: 'View or set local preferences',
567
+ usage: 'agora preferences [<key> <value>] [--json]',
568
+ details: 'Preferences are stored locally on disk and work without an account. ' +
569
+ 'Keys: theme (dark|light|auto), verbosity (verbose|medium|quiet), ' +
570
+ 'username, email, bio.',
571
+ flags: [
572
+ { flag: '--json', description: 'Output preferences as JSON' }
573
+ ],
574
+ examples: [
575
+ 'agora preferences',
576
+ 'agora preferences theme light',
577
+ 'agora preferences verbosity quiet',
578
+ 'agora preferences username "Jane Doe"'
579
+ ]
580
+ },
581
+ {
582
+ name: 'history',
583
+ group: 'Setup',
584
+ summary: 'View search and chat history',
585
+ usage: 'agora history [--limit N] [--clear] [--json]',
586
+ details: 'Shows recent searches and chat messages. History is stored locally and ' +
587
+ 'works offline. Use --clear to erase all history.',
588
+ flags: [
589
+ { flag: '--limit', description: 'Number of entries to show (default: 50)' },
590
+ { flag: '--clear', description: 'Clear all history' },
591
+ { flag: '--json', description: 'Output as JSON' }
592
+ ],
593
+ examples: [
594
+ 'agora history',
595
+ 'agora history --limit 10',
596
+ 'agora history --clear'
597
+ ]
598
+ }
599
+ ];
600
+ //# sourceMappingURL=commands-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-meta.js","sourceRoot":"","sources":["../../src/cli/commands-meta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Pure completion providers for the Agora shell prompter.
3
+ * All functions are side-effect-free; callers inject I/O via context.
4
+ */
5
+ export interface CompletionResult {
6
+ matches: string[];
7
+ replaceFrom: number;
8
+ }
9
+ export interface CompletionContext {
10
+ slashCommands: string[];
11
+ marketplaceIds: () => string[];
12
+ savedIds: () => string[];
13
+ listDir: (path: string) => string[];
14
+ cwd: string;
15
+ }
16
+ export declare function completeShellLine(line: string, cursor: number, context: CompletionContext): CompletionResult;
17
+ export declare function ghostFromHistory(line: string, history: string[]): string | null;
18
+ //# sourceMappingURL=completions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/cli/completions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,MAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;CACb;AAsCD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAyFlB;AA+ED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAS/E"}