opencode-agora 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +86 -255
  2. package/dist/atomic-write.d.ts +10 -0
  3. package/dist/atomic-write.d.ts.map +1 -0
  4. package/dist/atomic-write.js +23 -0
  5. package/dist/atomic-write.js.map +1 -0
  6. package/dist/auth/refresh.d.ts +17 -0
  7. package/dist/auth/refresh.d.ts.map +1 -0
  8. package/dist/auth/refresh.js +50 -0
  9. package/dist/auth/refresh.js.map +1 -0
  10. package/dist/cli/app.d.ts +13 -18
  11. package/dist/cli/app.d.ts.map +1 -1
  12. package/dist/cli/app.js +184 -1187
  13. package/dist/cli/app.js.map +1 -1
  14. package/dist/cli/chat-renderer.d.ts +31 -0
  15. package/dist/cli/chat-renderer.d.ts.map +1 -0
  16. package/dist/cli/chat-renderer.js +275 -0
  17. package/dist/cli/chat-renderer.js.map +1 -0
  18. package/dist/cli/commands/browse.d.ts +4 -0
  19. package/dist/cli/commands/browse.d.ts.map +1 -0
  20. package/dist/cli/commands/browse.js +80 -0
  21. package/dist/cli/commands/browse.js.map +1 -0
  22. package/dist/cli/commands/chat.d.ts +4 -0
  23. package/dist/cli/commands/chat.d.ts.map +1 -0
  24. package/dist/cli/commands/chat.js +125 -0
  25. package/dist/cli/commands/chat.js.map +1 -0
  26. package/dist/cli/commands/community.d.ts +12 -0
  27. package/dist/cli/commands/community.d.ts.map +1 -0
  28. package/dist/cli/commands/community.js +453 -0
  29. package/dist/cli/commands/community.js.map +1 -0
  30. package/dist/cli/commands/export.d.ts +3 -0
  31. package/dist/cli/commands/export.d.ts.map +1 -0
  32. package/dist/cli/commands/export.js +108 -0
  33. package/dist/cli/commands/export.js.map +1 -0
  34. package/dist/cli/commands/init.d.ts +4 -0
  35. package/dist/cli/commands/init.d.ts.map +1 -0
  36. package/dist/cli/commands/init.js +299 -0
  37. package/dist/cli/commands/init.js.map +1 -0
  38. package/dist/cli/commands/learn.d.ts +4 -0
  39. package/dist/cli/commands/learn.d.ts.map +1 -0
  40. package/dist/cli/commands/learn.js +62 -0
  41. package/dist/cli/commands/learn.js.map +1 -0
  42. package/dist/cli/commands/marketplace.d.ts +9 -0
  43. package/dist/cli/commands/marketplace.d.ts.map +1 -0
  44. package/dist/cli/commands/marketplace.js +321 -0
  45. package/dist/cli/commands/marketplace.js.map +1 -0
  46. package/dist/cli/commands/notify.d.ts +3 -0
  47. package/dist/cli/commands/notify.d.ts.map +1 -0
  48. package/dist/cli/commands/notify.js +59 -0
  49. package/dist/cli/commands/notify.js.map +1 -0
  50. package/dist/cli/commands/operations.d.ts +16 -0
  51. package/dist/cli/commands/operations.d.ts.map +1 -0
  52. package/dist/cli/commands/operations.js +1006 -0
  53. package/dist/cli/commands/operations.js.map +1 -0
  54. package/dist/cli/commands/ping.d.ts +3 -0
  55. package/dist/cli/commands/ping.d.ts.map +1 -0
  56. package/dist/cli/commands/ping.js +56 -0
  57. package/dist/cli/commands/ping.js.map +1 -0
  58. package/dist/cli/commands/today.d.ts +3 -0
  59. package/dist/cli/commands/today.d.ts.map +1 -0
  60. package/dist/cli/commands/today.js +142 -0
  61. package/dist/cli/commands/today.js.map +1 -0
  62. package/dist/cli/commands/types.d.ts +5 -0
  63. package/dist/cli/commands/types.d.ts.map +1 -0
  64. package/dist/cli/commands/types.js +2 -0
  65. package/dist/cli/commands/types.js.map +1 -0
  66. package/dist/cli/commands/watch.d.ts +3 -0
  67. package/dist/cli/commands/watch.d.ts.map +1 -0
  68. package/dist/cli/commands/watch.js +41 -0
  69. package/dist/cli/commands/watch.js.map +1 -0
  70. package/dist/cli/commands/welcome.d.ts +3 -0
  71. package/dist/cli/commands/welcome.d.ts.map +1 -0
  72. package/dist/cli/commands/welcome.js +97 -0
  73. package/dist/cli/commands/welcome.js.map +1 -0
  74. package/dist/cli/commands-meta.d.ts +21 -0
  75. package/dist/cli/commands-meta.d.ts.map +1 -0
  76. package/dist/cli/commands-meta.js +828 -0
  77. package/dist/cli/commands-meta.js.map +1 -0
  78. package/dist/cli/completions-gen.d.ts +2 -0
  79. package/dist/cli/completions-gen.d.ts.map +1 -0
  80. package/dist/cli/completions-gen.js +195 -0
  81. package/dist/cli/completions-gen.js.map +1 -0
  82. package/dist/cli/completions.d.ts +18 -0
  83. package/dist/cli/completions.d.ts.map +1 -0
  84. package/dist/cli/completions.js +227 -0
  85. package/dist/cli/completions.js.map +1 -0
  86. package/dist/cli/flags.d.ts +19 -0
  87. package/dist/cli/flags.d.ts.map +1 -0
  88. package/dist/cli/flags.js +91 -0
  89. package/dist/cli/flags.js.map +1 -0
  90. package/dist/cli/format.d.ts +19 -0
  91. package/dist/cli/format.d.ts.map +1 -0
  92. package/dist/cli/format.js +249 -0
  93. package/dist/cli/format.js.map +1 -0
  94. package/dist/cli/helpers.d.ts +95 -0
  95. package/dist/cli/helpers.d.ts.map +1 -0
  96. package/dist/cli/helpers.js +301 -0
  97. package/dist/cli/helpers.js.map +1 -0
  98. package/dist/cli/mcp-server.d.ts +4 -0
  99. package/dist/cli/mcp-server.d.ts.map +1 -0
  100. package/dist/cli/mcp-server.js +277 -0
  101. package/dist/cli/mcp-server.js.map +1 -0
  102. package/dist/cli/menu.d.ts +7 -0
  103. package/dist/cli/menu.d.ts.map +1 -0
  104. package/dist/cli/menu.js +172 -0
  105. package/dist/cli/menu.js.map +1 -0
  106. package/dist/cli/pages/community.d.ts +9 -0
  107. package/dist/cli/pages/community.d.ts.map +1 -0
  108. package/dist/cli/pages/community.js +1094 -0
  109. package/dist/cli/pages/community.js.map +1 -0
  110. package/dist/cli/pages/helpers.d.ts +37 -0
  111. package/dist/cli/pages/helpers.d.ts.map +1 -0
  112. package/dist/cli/pages/helpers.js +98 -0
  113. package/dist/cli/pages/helpers.js.map +1 -0
  114. package/dist/cli/pages/home.d.ts +4 -0
  115. package/dist/cli/pages/home.d.ts.map +1 -0
  116. package/dist/cli/pages/home.js +231 -0
  117. package/dist/cli/pages/home.js.map +1 -0
  118. package/dist/cli/pages/marketplace.d.ts +5 -0
  119. package/dist/cli/pages/marketplace.d.ts.map +1 -0
  120. package/dist/cli/pages/marketplace.js +583 -0
  121. package/dist/cli/pages/marketplace.js.map +1 -0
  122. package/dist/cli/pages/news.d.ts +31 -0
  123. package/dist/cli/pages/news.d.ts.map +1 -0
  124. package/dist/cli/pages/news.js +688 -0
  125. package/dist/cli/pages/news.js.map +1 -0
  126. package/dist/cli/pages/settings.d.ts +3 -0
  127. package/dist/cli/pages/settings.d.ts.map +1 -0
  128. package/dist/cli/pages/settings.js +296 -0
  129. package/dist/cli/pages/settings.js.map +1 -0
  130. package/dist/cli/pages/types.d.ts +67 -0
  131. package/dist/cli/pages/types.d.ts.map +1 -0
  132. package/dist/cli/pages/types.js +2 -0
  133. package/dist/cli/pages/types.js.map +1 -0
  134. package/dist/cli/prompter.d.ts +135 -0
  135. package/dist/cli/prompter.d.ts.map +1 -0
  136. package/dist/cli/prompter.js +710 -0
  137. package/dist/cli/prompter.js.map +1 -0
  138. package/dist/cli/shell.d.ts +23 -0
  139. package/dist/cli/shell.d.ts.map +1 -0
  140. package/dist/cli/shell.js +1106 -0
  141. package/dist/cli/shell.js.map +1 -0
  142. package/dist/cli/tui.d.ts +7 -0
  143. package/dist/cli/tui.d.ts.map +1 -0
  144. package/dist/cli/tui.js +419 -0
  145. package/dist/cli/tui.js.map +1 -0
  146. package/dist/cli.js +1 -1
  147. package/dist/cli.js.map +1 -1
  148. package/dist/commands.d.ts +14 -0
  149. package/dist/commands.d.ts.map +1 -0
  150. package/dist/commands.js +28 -0
  151. package/dist/commands.js.map +1 -0
  152. package/dist/community/client.d.ts +84 -0
  153. package/dist/community/client.d.ts.map +1 -0
  154. package/dist/community/client.js +340 -0
  155. package/dist/community/client.js.map +1 -0
  156. package/dist/community/search.d.ts +25 -0
  157. package/dist/community/search.d.ts.map +1 -0
  158. package/dist/community/search.js +62 -0
  159. package/dist/community/search.js.map +1 -0
  160. package/dist/community/types.d.ts +71 -0
  161. package/dist/community/types.d.ts.map +1 -0
  162. package/dist/community/types.js +11 -0
  163. package/dist/community/types.js.map +1 -0
  164. package/dist/config.d.ts +1 -7
  165. package/dist/config.d.ts.map +1 -1
  166. package/dist/config.js +0 -32
  167. package/dist/config.js.map +1 -1
  168. package/dist/data.d.ts +1 -1
  169. package/dist/data.d.ts.map +1 -1
  170. package/dist/data.js +778 -40
  171. package/dist/data.js.map +1 -1
  172. package/dist/format.d.ts +5 -39
  173. package/dist/format.d.ts.map +1 -1
  174. package/dist/format.js +5 -120
  175. package/dist/format.js.map +1 -1
  176. package/dist/history.d.ts +13 -0
  177. package/dist/history.d.ts.map +1 -0
  178. package/dist/history.js +37 -0
  179. package/dist/history.js.map +1 -0
  180. package/dist/hubs/cache.d.ts +6 -0
  181. package/dist/hubs/cache.d.ts.map +1 -0
  182. package/dist/hubs/cache.js +46 -0
  183. package/dist/hubs/cache.js.map +1 -0
  184. package/dist/hubs/enrichment.d.ts +43 -0
  185. package/dist/hubs/enrichment.d.ts.map +1 -0
  186. package/dist/hubs/enrichment.js +239 -0
  187. package/dist/hubs/enrichment.js.map +1 -0
  188. package/dist/hubs/github.d.ts +12 -0
  189. package/dist/hubs/github.d.ts.map +1 -0
  190. package/dist/hubs/github.js +54 -0
  191. package/dist/hubs/github.js.map +1 -0
  192. package/dist/hubs/huggingface.d.ts +27 -0
  193. package/dist/hubs/huggingface.d.ts.map +1 -0
  194. package/dist/hubs/huggingface.js +88 -0
  195. package/dist/hubs/huggingface.js.map +1 -0
  196. package/dist/hubs/quality.d.ts +26 -0
  197. package/dist/hubs/quality.d.ts.map +1 -0
  198. package/dist/hubs/quality.js +57 -0
  199. package/dist/hubs/quality.js.map +1 -0
  200. package/dist/hubs/types.d.ts +30 -0
  201. package/dist/hubs/types.d.ts.map +1 -0
  202. package/dist/hubs/types.js +2 -0
  203. package/dist/hubs/types.js.map +1 -0
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +188 -224
  206. package/dist/index.js.map +1 -1
  207. package/dist/init.d.ts.map +1 -1
  208. package/dist/init.js +6 -11
  209. package/dist/init.js.map +1 -1
  210. package/dist/live.d.ts +14 -0
  211. package/dist/live.d.ts.map +1 -1
  212. package/dist/live.js +35 -3
  213. package/dist/live.js.map +1 -1
  214. package/dist/marketplace.d.ts +25 -3
  215. package/dist/marketplace.d.ts.map +1 -1
  216. package/dist/marketplace.js +279 -22
  217. package/dist/marketplace.js.map +1 -1
  218. package/dist/news/cache.d.ts +13 -0
  219. package/dist/news/cache.d.ts.map +1 -0
  220. package/dist/news/cache.js +66 -0
  221. package/dist/news/cache.js.map +1 -0
  222. package/dist/news/score.d.ts +4 -0
  223. package/dist/news/score.d.ts.map +1 -0
  224. package/dist/news/score.js +43 -0
  225. package/dist/news/score.js.map +1 -0
  226. package/dist/news/sources/arxiv.d.ts +9 -0
  227. package/dist/news/sources/arxiv.d.ts.map +1 -0
  228. package/dist/news/sources/arxiv.js +107 -0
  229. package/dist/news/sources/arxiv.js.map +1 -0
  230. package/dist/news/sources/github-trending.d.ts +9 -0
  231. package/dist/news/sources/github-trending.d.ts.map +1 -0
  232. package/dist/news/sources/github-trending.js +97 -0
  233. package/dist/news/sources/github-trending.js.map +1 -0
  234. package/dist/news/sources/hn.d.ts +9 -0
  235. package/dist/news/sources/hn.d.ts.map +1 -0
  236. package/dist/news/sources/hn.js +57 -0
  237. package/dist/news/sources/hn.js.map +1 -0
  238. package/dist/news/sources/reddit.d.ts +9 -0
  239. package/dist/news/sources/reddit.d.ts.map +1 -0
  240. package/dist/news/sources/reddit.js +69 -0
  241. package/dist/news/sources/reddit.js.map +1 -0
  242. package/dist/news/sources/rss.d.ts +13 -0
  243. package/dist/news/sources/rss.d.ts.map +1 -0
  244. package/dist/news/sources/rss.js +14 -0
  245. package/dist/news/sources/rss.js.map +1 -0
  246. package/dist/news/types.d.ts +42 -0
  247. package/dist/news/types.d.ts.map +1 -0
  248. package/dist/news/types.js +56 -0
  249. package/dist/news/types.js.map +1 -0
  250. package/dist/preferences.d.ts +14 -0
  251. package/dist/preferences.d.ts.map +1 -0
  252. package/dist/preferences.js +31 -0
  253. package/dist/preferences.js.map +1 -0
  254. package/dist/settings.d.ts +26 -0
  255. package/dist/settings.d.ts.map +1 -0
  256. package/dist/settings.js +251 -0
  257. package/dist/settings.js.map +1 -0
  258. package/dist/state.d.ts +9 -2
  259. package/dist/state.d.ts.map +1 -1
  260. package/dist/state.js +41 -19
  261. package/dist/state.js.map +1 -1
  262. package/dist/transcript.d.ts +28 -0
  263. package/dist/transcript.d.ts.map +1 -0
  264. package/dist/transcript.js +79 -0
  265. package/dist/transcript.js.map +1 -0
  266. package/dist/types.d.ts +19 -1
  267. package/dist/types.d.ts.map +1 -1
  268. package/dist/ui.d.ts +157 -0
  269. package/dist/ui.d.ts.map +1 -0
  270. package/dist/ui.js +296 -0
  271. package/dist/ui.js.map +1 -0
  272. package/package.json +11 -9
  273. package/dist/api.d.ts +0 -72
  274. package/dist/api.d.ts.map +0 -1
  275. package/dist/api.js +0 -109
  276. package/dist/api.js.map +0 -1
  277. package/dist/logger.d.ts +0 -20
  278. package/dist/logger.d.ts.map +0 -1
  279. package/dist/logger.js +0 -59
  280. package/dist/logger.js.map +0 -1
@@ -0,0 +1,108 @@
1
+ import { getMarketplaceItems } from '../../marketplace.js';
2
+ import { searchMarketplaceSource } from '../../live.js';
3
+ import { stringFlag, numberFlag, sourceOptions, warnFallback, writeLine, writeJson, usageError } from '../helpers.js';
4
+ import { header } from '../format.js';
5
+ function toCsv(items) {
6
+ const headerRow = 'id,name,kind,category,author,stars,installs,tags,description';
7
+ const rows = items.map((i) => {
8
+ const fields = [
9
+ escapeCsv(i.id),
10
+ escapeCsv(i.name),
11
+ i.kind,
12
+ i.category,
13
+ escapeCsv(i.author),
14
+ String(i.stars ?? 0),
15
+ String(i.installs ?? 0),
16
+ escapeCsv((i.tags ?? []).join(';')),
17
+ escapeCsv(i.description)
18
+ ];
19
+ return fields.join(',');
20
+ });
21
+ return [headerRow, ...rows].join('\n');
22
+ }
23
+ function escapeCsv(value) {
24
+ if (value.includes(',') || value.includes('"') || value.includes('\n')) {
25
+ return `"${value.replace(/"/g, '""')}"`;
26
+ }
27
+ return value;
28
+ }
29
+ function toMarkdown(items) {
30
+ const lines = ['| id | name | kind | category | author | stars | installs | tags |'];
31
+ lines.push('|' + ['---', '---', '---', '---', '---', '---', '---', '---'].join('|') + '|');
32
+ for (const i of items) {
33
+ lines.push(`| ${i.id} | ${escapeMd(i.name)} | ${i.kind} | ${i.category} | ${escapeMd(i.author)} | ${i.stars ?? 0} | ${i.installs ?? 0} | ${(i.tags ?? []).join(', ')} |`);
34
+ }
35
+ return lines.join('\n');
36
+ }
37
+ function escapeMd(value) {
38
+ return value.replace(/\|/g, '\\|');
39
+ }
40
+ function toTable(items, _style) {
41
+ const idW = Math.max(4, ...items.map((i) => i.id.length));
42
+ const nameW = Math.max(4, ...items.map((i) => i.name.length));
43
+ const catW = Math.max(8, ...items.map((i) => i.category.length));
44
+ const authorW = Math.max(6, ...items.map((i) => i.author.length));
45
+ const hr = `+-${'-'.repeat(idW)}-+-${'-'.repeat(nameW)}-+-${'-'.repeat(4)}-+-${'-'.repeat(catW)}-+-${'-'.repeat(authorW)}-+-${'-'.repeat(6)}-+-${'-'.repeat(8)}-+`;
46
+ const hdr = `| ${'id'.padEnd(idW)} | ${'name'.padEnd(nameW)} | kind | ${'category'.padEnd(catW)} | ${'author'.padEnd(authorW)} | stars | installs |`;
47
+ const rows = items.map((i) => {
48
+ const name = i.name.length > nameW ? i.name.slice(0, nameW - 1) + '\u2026' : i.name.padEnd(nameW);
49
+ return `| ${i.id.padEnd(idW)} | ${name} | ${i.kind.padEnd(4)} | ${i.category.padEnd(catW)} | ${i.author.padEnd(authorW)} | ${String(i.stars ?? 0).padStart(5)} | ${String(i.installs ?? 0).padStart(7)} |`;
50
+ });
51
+ return [hr, hdr, hr, ...rows, hr].join('\n');
52
+ }
53
+ export const commandExport = async (parsed, io, style) => {
54
+ const format = (stringFlag(parsed, 'format', 'f') || 'json');
55
+ const query = parsed.args.join(' ');
56
+ const category = stringFlag(parsed, 'category', 'c') || 'all';
57
+ const limit = numberFlag(parsed, 'limit', 'n') || 0;
58
+ const validFormats = ['json', 'csv', 'markdown', 'table'];
59
+ if (!validFormats.includes(format)) {
60
+ return usageError(io, `Unknown format "${format}". Use --format json|csv|markdown|table`);
61
+ }
62
+ let items;
63
+ if (parsed.flags.api || parsed.flags.live) {
64
+ const result = await searchMarketplaceSource({
65
+ ...(await sourceOptions(parsed, io)),
66
+ query,
67
+ category,
68
+ limit: limit || 1000
69
+ });
70
+ items = result.data;
71
+ warnFallback(result, io);
72
+ }
73
+ else {
74
+ items = getMarketplaceItems()
75
+ .filter((i) => {
76
+ if (category !== 'all' && i.category !== category)
77
+ return false;
78
+ if (query && !i.id.toLowerCase().includes(query.toLowerCase()) && !i.name.toLowerCase().includes(query.toLowerCase()) && !i.description.toLowerCase().includes(query.toLowerCase()))
79
+ return false;
80
+ return true;
81
+ });
82
+ if (limit > 0)
83
+ items = items.slice(0, limit);
84
+ }
85
+ if (items.length === 0) {
86
+ writeLine(io.stdout, 'No items match the export criteria.');
87
+ return 0;
88
+ }
89
+ if (format === 'json') {
90
+ writeJson(io.stdout, { count: items.length, items });
91
+ return 0;
92
+ }
93
+ if (format === 'csv') {
94
+ writeLine(io.stdout, toCsv(items));
95
+ return 0;
96
+ }
97
+ if (format === 'markdown') {
98
+ writeLine(io.stdout, header('agora export', [`${items.length} items`, format], style));
99
+ writeLine(io.stdout, '');
100
+ writeLine(io.stdout, toMarkdown(items));
101
+ return 0;
102
+ }
103
+ writeLine(io.stdout, header('agora export', [`${items.length} items`, format], style));
104
+ writeLine(io.stdout, '');
105
+ writeLine(io.stdout, toTable(items, style));
106
+ return 0;
107
+ };
108
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const commandInit: CommandHandler;
3
+ export declare const commandUse: CommandHandler;
4
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA6FjD,eAAO,MAAM,WAAW,EAAE,cA6JzB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,cAoExB,CAAC"}
@@ -0,0 +1,299 @@
1
+ import process from 'node:process';
2
+ import { join } from 'node:path';
3
+ import { mkdirSync, writeFileSync } from 'node:fs';
4
+ import { scanProject, generateInitPlan, applyInitPlan, runCommands } from '../../init.js';
5
+ import { installAgoraCommand } from '../../commands.js';
6
+ import { formatConfigJson } from '../../config.js';
7
+ import { detectOpenCodeConfigPath, loadOpenCodeConfig, writeOpenCodeConfig } from '../../config-files.js';
8
+ import { sampleWorkflows } from '../../data.js';
9
+ import { stringFlag, writeLine, writeJson, usageError } from '../helpers.js';
10
+ import { header } from '../format.js';
11
+ import { renderMeander, supportsTrueColor } from '../../ui.js';
12
+ const TEMPLATES = {
13
+ 'node-mcp': {
14
+ name: 'Node.js MCP Server',
15
+ files: {
16
+ 'package.json': JSON.stringify({
17
+ name: 'my-mcp-server',
18
+ version: '1.0.0',
19
+ type: 'module',
20
+ scripts: { start: 'node index.js' },
21
+ dependencies: { '@modelcontextprotocol/sdk': '^1.0.0' }
22
+ }, null, 2) + '\n',
23
+ 'index.js': `import { Server } from '@modelcontextprotocol/sdk/server/index.js';
24
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
25
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
26
+
27
+ const server = new Server({ name: 'my-mcp-server', version: '1.0.0' }, {
28
+ capabilities: { tools: {} }
29
+ });
30
+
31
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
32
+ tools: [{
33
+ name: 'hello',
34
+ description: 'A friendly greeting tool',
35
+ inputSchema: { type: 'object', properties: { name: { type: 'string' } } }
36
+ }]
37
+ }));
38
+
39
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
40
+ if (request.params.name === 'hello') {
41
+ return { content: [{ type: 'text', text: \`Hello, \${request.params.arguments?.name || 'world'}!\` }] };
42
+ }
43
+ throw new Error('Unknown tool');
44
+ });
45
+
46
+ const transport = new StdioServerTransport();
47
+ await server.connect(transport);
48
+ `
49
+ },
50
+ config: {
51
+ mcp: {
52
+ 'my-mcp-server': {
53
+ type: 'local',
54
+ command: ['node', 'index.js'],
55
+ enabled: true
56
+ }
57
+ }
58
+ }
59
+ },
60
+ 'python-mcp': {
61
+ name: 'Python MCP Server',
62
+ files: {
63
+ 'requirements.txt': 'mcp\n',
64
+ 'server.py': `from mcp.server import Server
65
+ from mcp.server.stdio import stdio_server
66
+ from mcp.types import Tool, TextContent
67
+
68
+ app = Server("my-mcp-server")
69
+
70
+ @app.list_tools()
71
+ async def list_tools() -> list[Tool]:
72
+ return [Tool(name="hello", description="A friendly greeting",
73
+ inputSchema={"type": "object", "properties": {"name": {"type": "string"}}})]
74
+
75
+ @app.call_tool()
76
+ async def call_tool(name: str, arguments: dict) -> list[TextContent]:
77
+ if name == "hello":
78
+ name_val = arguments.get("name", "world")
79
+ return [TextContent(type="text", text=f"Hello, {name_val}!")]
80
+ raise ValueError(f"Unknown tool: {name}")
81
+
82
+ async def main():
83
+ async with stdio_server() as streams:
84
+ await app.run(streams[0], streams[1], app.create_initialization_options())
85
+
86
+ if __name__ == "__main__":
87
+ import asyncio
88
+ asyncio.run(main())
89
+ `
90
+ },
91
+ config: {
92
+ mcp: {
93
+ 'my-mcp-server': {
94
+ type: 'local',
95
+ command: ['uv', 'run', 'server.py'],
96
+ enabled: true
97
+ }
98
+ }
99
+ }
100
+ }
101
+ };
102
+ export const commandInit = async (parsed, io, style) => {
103
+ const cwd = io.cwd || process.cwd();
104
+ const templateName = stringFlag(parsed, 'template') || '';
105
+ const configPath = detectOpenCodeConfigPath({ cwd, env: io.env });
106
+ if (templateName) {
107
+ const template = TEMPLATES[templateName];
108
+ if (!template) {
109
+ return usageError(io, `Unknown template "${templateName}". Available: ${Object.keys(TEMPLATES).join(', ')}`);
110
+ }
111
+ if (parsed.flags.json) {
112
+ writeJson(io.stdout, { template: templateName, files: Object.keys(template.files), target: cwd });
113
+ return 0;
114
+ }
115
+ writeLine(io.stdout, `Scaffolding ${style.accent(template.name)} in ${cwd}`);
116
+ for (const [file, content] of Object.entries(template.files)) {
117
+ const fullPath = join(cwd, file);
118
+ mkdirSync(join(cwd, file.split('/').slice(0, -1).join('/')), { recursive: true });
119
+ writeFileSync(fullPath, content, 'utf8');
120
+ writeLine(io.stdout, ` ${style.dim('✓')} ${file}`);
121
+ }
122
+ if (template.config) {
123
+ const loaded = loadOpenCodeConfig(configPath);
124
+ const config = {
125
+ ...loaded.config,
126
+ mcp: { ...loaded.config.mcp, ...template.config.mcp }
127
+ };
128
+ writeOpenCodeConfig(configPath, config);
129
+ writeLine(io.stdout, ` ${style.dim('✓')} Registered MCP server in ${configPath}`);
130
+ }
131
+ writeLine(io.stdout, `\nDone! cd ${cwd} and check the generated files.`);
132
+ if (templateName === 'python-mcp')
133
+ writeLine(io.stdout, 'Tip: uv sync && uv run server.py');
134
+ if (templateName === 'node-mcp')
135
+ writeLine(io.stdout, 'Tip: npm install && npm start');
136
+ return 0;
137
+ }
138
+ const scan = scanProject(cwd);
139
+ const plan = generateInitPlan(scan);
140
+ const withMcp = parsed.flags.mcp === true;
141
+ if (withMcp) {
142
+ plan.config.mcp = plan.config.mcp || {};
143
+ plan.config.mcp.agora = {
144
+ type: 'local',
145
+ command: ['agora', 'mcp'],
146
+ enabled: true
147
+ };
148
+ plan.servers.push('agora');
149
+ plan.notes.push('Agora MCP server registered — OpenCode can discover marketplace tools.');
150
+ }
151
+ if (parsed.flags.json) {
152
+ if (parsed.flags.dryRun) {
153
+ writeJson(io.stdout, {
154
+ projectType: scan.type,
155
+ frameworks: scan.frameworks,
156
+ config: plan.config,
157
+ servers: plan.servers,
158
+ commands: plan.commands,
159
+ slashCommand: join(cwd, '.opencode', 'command', 'agora.md'),
160
+ dryRun: true
161
+ });
162
+ return 0;
163
+ }
164
+ applyInitPlan(plan, configPath);
165
+ const commandPath = installAgoraCommand(cwd);
166
+ const installResults = plan.commands.length ? runCommands(plan.commands) : [];
167
+ const installed = installResults.filter((r) => r.ok).length;
168
+ const failed = installResults.filter((r) => !r.ok).length;
169
+ writeJson(io.stdout, {
170
+ projectType: scan.type,
171
+ frameworks: scan.frameworks,
172
+ config: plan.config,
173
+ servers: plan.servers,
174
+ commands: plan.commands,
175
+ slashCommand: commandPath,
176
+ installResults,
177
+ installed,
178
+ failed
179
+ });
180
+ return 0;
181
+ }
182
+ writeLine(io.stdout, `Scanning ${cwd}...`);
183
+ writeLine(io.stdout, ` ${style.dim('Project type')} ${scan.type}`);
184
+ if (scan.frameworks.length)
185
+ writeLine(io.stdout, ` ${style.dim('Frameworks')} ${scan.frameworks.join(', ')}`);
186
+ if (scan.hasDocker)
187
+ writeLine(io.stdout, ` ${style.dim('Docker')} detected`);
188
+ if (scan.hasTests)
189
+ writeLine(io.stdout, ` ${style.dim('Tests')} detected`);
190
+ if (scan.hasDatabase)
191
+ writeLine(io.stdout, ` ${style.dim('Database')} detected`);
192
+ if (!parsed.flags.dryRun) {
193
+ applyInitPlan(plan, configPath);
194
+ writeLine(io.stdout, `\nWrote config to ${configPath}`);
195
+ const commandPath = installAgoraCommand(cwd);
196
+ writeLine(io.stdout, `Installed /agora slash command at ${commandPath}`);
197
+ if (plan.commands.length) {
198
+ writeLine(io.stdout, '\nInstalling MCP server packages...');
199
+ const isTTY = Boolean(io.stdout.isTTY);
200
+ const n = plan.commands.length;
201
+ const installResults = [];
202
+ for (let i = 0; i < n; i++) {
203
+ const [result] = runCommands([plan.commands[i]]);
204
+ installResults.push(result);
205
+ if (isTTY && n > 1) {
206
+ const pct = ((i + 1) / n) * 100;
207
+ const bar = renderMeander({
208
+ trueColor: supportsTrueColor(io.env ?? {}),
209
+ mode: 'progress',
210
+ pct
211
+ });
212
+ const line = ` ${bar}`;
213
+ if (i < n - 1) {
214
+ process.stdout.write(`\r\x1b[K${line}`);
215
+ }
216
+ else {
217
+ process.stdout.write(`\r\x1b[K${line}\n`);
218
+ }
219
+ }
220
+ }
221
+ const installed = installResults.filter((r) => r.ok).length;
222
+ const failed = installResults.filter((r) => !r.ok).length;
223
+ writeLine(io.stdout, ` Installed ${installed} of ${plan.commands.length} packages${failed ? ` (${failed} failed)` : ''}`);
224
+ }
225
+ writeLine(io.stdout, '\n✓ Agora initialized! Restart OpenCode to pick up the changes.');
226
+ writeLine(io.stdout, ' Plugin "opencode-agora" is now registered in your config.');
227
+ writeLine(io.stdout, ' Type `/agora` in OpenCode to use the marketplace.');
228
+ writeLine(io.stdout, ` ${plan.servers.length} MCP servers configured.`);
229
+ if (withMcp)
230
+ writeLine(io.stdout, ' Agora MCP server registered — `agora mcp` is available as an MCP tool.');
231
+ if (plan.workflows.length)
232
+ writeLine(io.stdout, ` ${plan.workflows.length} workflows available via \`agora use\`.`);
233
+ for (const note of plan.notes)
234
+ writeLine(io.stdout, ` ${note}`);
235
+ }
236
+ else {
237
+ writeLine(io.stdout, '\n--- Dry run ---');
238
+ writeLine(io.stdout, `Target config: ${configPath}`);
239
+ writeLine(io.stdout, formatConfigJson(plan.config));
240
+ writeLine(io.stdout, `\nSlash command: ${join(cwd, '.opencode', 'command', 'agora.md')}`);
241
+ writeLine(io.stdout, '\nPackages to install:');
242
+ for (const cmd of plan.commands)
243
+ writeLine(io.stdout, ` ${cmd}`);
244
+ writeLine(io.stdout, '\nRun without --dry-run to apply.');
245
+ }
246
+ return 0;
247
+ };
248
+ export const commandUse = async (parsed, io, style) => {
249
+ const id = parsed.args[0];
250
+ if (!id) {
251
+ writeLine(io.stdout, header('agora use', [`${sampleWorkflows.length} available workflows`], style));
252
+ writeLine(io.stdout, '');
253
+ writeLine(io.stdout, sampleWorkflows
254
+ .map((wf) => ` ${style.accent(wf.id.padEnd(22))} ${style.dim(wf.name)}`)
255
+ .join('\n'));
256
+ writeLine(io.stdout, '');
257
+ writeLine(io.stdout, style.dim('Run `agora use <id>` to apply a workflow as a skill.'));
258
+ return 0;
259
+ }
260
+ const workflow = sampleWorkflows.find((w) => w.id === id || w.name.toLowerCase() === id.toLowerCase());
261
+ if (!workflow)
262
+ return usageError(io, `Workflow not found: ${id}. Run \`agora workflows\` to see available workflows.`);
263
+ const cwd = io.cwd || process.cwd();
264
+ const skillsDir = join(cwd, '.opencode', 'skills');
265
+ mkdirSync(skillsDir, { recursive: true });
266
+ const skillId = workflow.id.replace(/^wf-/, 'skill-');
267
+ const skillPath = join(skillsDir, `${skillId}.md`);
268
+ const skillContent = `---
269
+ name: ${workflow.name}
270
+ description: ${workflow.description}
271
+ model: ${workflow.model || ''}
272
+ tags: [${workflow.tags.map((t) => `"${t}"`).join(', ')}]
273
+ ---
274
+
275
+ ${workflow.prompt}
276
+ `;
277
+ writeFileSync(skillPath, skillContent, 'utf8');
278
+ const configPath = detectOpenCodeConfigPath({ cwd, env: io.env });
279
+ const loaded = loadOpenCodeConfig(configPath);
280
+ if (loaded.error)
281
+ return usageError(io, `${loaded.path}: ${loaded.error}`);
282
+ const plugins = new Set(loaded.config.plugin || []);
283
+ plugins.add(skillId);
284
+ const updatedConfig = {
285
+ ...loaded.config,
286
+ plugin: Array.from(plugins)
287
+ };
288
+ writeOpenCodeConfig(configPath, updatedConfig);
289
+ if (parsed.flags.json) {
290
+ writeJson(io.stdout, { workflow: workflow.id, skillPath, registered: true });
291
+ return 0;
292
+ }
293
+ writeLine(io.stdout, `✓ Applied "${workflow.name}" as an OpenCode skill.`);
294
+ writeLine(io.stdout, ` Skill file: ${skillPath}`);
295
+ writeLine(io.stdout, ` Registered in: ${configPath}`);
296
+ writeLine(io.stdout, ' Restart OpenCode to start using it.');
297
+ return 0;
298
+ };
299
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const commandTutorials: CommandHandler;
3
+ export declare const commandTutorial: CommandHandler;
4
+ //# sourceMappingURL=learn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/learn.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,gBAAgB,EAAE,cAmC9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cA4C7B,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { findTutorialSource, tutorialsSource } from '../../live.js';
2
+ import { numberFlag, sourceOptions, sourceLabel, warnFallback, sourcePayload, writeLine, writeJson, usageError, tutorialLevelFlag, tutorialStepNumber, tutorialStepPayload } from '../helpers.js';
3
+ import { header, formatTutorialList, formatTutorialStep } from '../format.js';
4
+ export const commandTutorials = async (parsed, io, style) => {
5
+ const query = parsed.args.join(' ');
6
+ const level = tutorialLevelFlag(parsed);
7
+ if (!level.ok)
8
+ return usageError(io, level.error);
9
+ const limit = numberFlag(parsed, 'limit', 'n') || 20;
10
+ const result = await tutorialsSource({
11
+ ...(await sourceOptions(parsed, io)),
12
+ query,
13
+ level: level.value,
14
+ limit
15
+ });
16
+ const tutorials = result.data;
17
+ warnFallback(result, io);
18
+ if (parsed.flags.json) {
19
+ writeJson(io.stdout, sourcePayload(result, { query, level: level.value, count: tutorials.length, tutorials }));
20
+ return 0;
21
+ }
22
+ if (tutorials.length === 0) {
23
+ writeLine(io.stdout, query ? `No tutorials match "${query}".` : 'No tutorials found.');
24
+ return 0;
25
+ }
26
+ writeLine(io.stdout, header('agora tutorials', [`${tutorials.length} results`, sourceLabel(result)], style));
27
+ writeLine(io.stdout, '');
28
+ writeLine(io.stdout, formatTutorialList(tutorials, style));
29
+ return 0;
30
+ };
31
+ export const commandTutorial = async (parsed, io, style) => {
32
+ const id = parsed.args[0];
33
+ if (!id) {
34
+ const { sampleTutorials } = await import('../../data.js');
35
+ writeLine(io.stdout, header('agora tutorial', [`${sampleTutorials.length} available tutorials`], style));
36
+ writeLine(io.stdout, '');
37
+ writeLine(io.stdout, sampleTutorials
38
+ .map((t) => ` ${style.accent(t.id.padEnd(22))} ${style.dim(t.title)} ${style.dim('[' + t.level + ']')}`)
39
+ .join('\n'));
40
+ writeLine(io.stdout, '');
41
+ writeLine(io.stdout, style.dim('Run `agora tutorial <id>` to start a tutorial.'));
42
+ return 0;
43
+ }
44
+ const step = tutorialStepNumber(parsed);
45
+ if (!step.ok)
46
+ return usageError(io, step.error);
47
+ const result = await findTutorialSource({ ...(await sourceOptions(parsed, io)), id });
48
+ const tutorial = result.data;
49
+ warnFallback(result, io);
50
+ if (!tutorial)
51
+ return usageError(io, `Tutorial not found: ${id}`);
52
+ if (parsed.flags.json) {
53
+ writeJson(io.stdout, sourcePayload(result, {
54
+ tutorial,
55
+ step: tutorialStepPayload(tutorial, step.value)
56
+ }));
57
+ return 0;
58
+ }
59
+ writeLine(io.stdout, formatTutorialStep(tutorial, step.value, style));
60
+ return 0;
61
+ };
62
+ //# sourceMappingURL=learn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn.js","sourceRoot":"","sources":["../../../src/cli/commands/learn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { CommandHandler } from './types.js';
2
+ export declare const commandSearch: CommandHandler;
3
+ export declare const commandBrowse: CommandHandler;
4
+ export declare const commandTrending: CommandHandler;
5
+ export declare const commandWorkflows: CommandHandler;
6
+ export declare const commandSimilar: CommandHandler;
7
+ export declare const commandAuthor: CommandHandler;
8
+ export declare const commandCompare: CommandHandler;
9
+ //# sourceMappingURL=marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/marketplace.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,aAAa,EAAE,cA2E3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAsC3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAgC7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cAwB9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAuB5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAyE3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAiI5B,CAAC"}