@proxygate/cli 0.1.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 (249) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +311 -0
  3. package/dist/commands/apis.d.ts +3 -0
  4. package/dist/commands/apis.d.ts.map +1 -0
  5. package/dist/commands/apis.js +68 -0
  6. package/dist/commands/apis.js.map +1 -0
  7. package/dist/commands/apis.test.d.ts +2 -0
  8. package/dist/commands/apis.test.d.ts.map +1 -0
  9. package/dist/commands/apis.test.js +103 -0
  10. package/dist/commands/apis.test.js.map +1 -0
  11. package/dist/commands/balance.d.ts +9 -0
  12. package/dist/commands/balance.d.ts.map +1 -0
  13. package/dist/commands/balance.js +50 -0
  14. package/dist/commands/balance.js.map +1 -0
  15. package/dist/commands/balance.test.d.ts +2 -0
  16. package/dist/commands/balance.test.d.ts.map +1 -0
  17. package/dist/commands/balance.test.js +106 -0
  18. package/dist/commands/balance.test.js.map +1 -0
  19. package/dist/commands/categories.d.ts +3 -0
  20. package/dist/commands/categories.d.ts.map +1 -0
  21. package/dist/commands/categories.js +45 -0
  22. package/dist/commands/categories.js.map +1 -0
  23. package/dist/commands/categories.test.d.ts +2 -0
  24. package/dist/commands/categories.test.d.ts.map +1 -0
  25. package/dist/commands/categories.test.js +84 -0
  26. package/dist/commands/categories.test.js.map +1 -0
  27. package/dist/commands/create.d.ts +3 -0
  28. package/dist/commands/create.d.ts.map +1 -0
  29. package/dist/commands/create.js +136 -0
  30. package/dist/commands/create.js.map +1 -0
  31. package/dist/commands/create.test.d.ts +2 -0
  32. package/dist/commands/create.test.d.ts.map +1 -0
  33. package/dist/commands/create.test.js +95 -0
  34. package/dist/commands/create.test.js.map +1 -0
  35. package/dist/commands/deposit.d.ts +9 -0
  36. package/dist/commands/deposit.d.ts.map +1 -0
  37. package/dist/commands/deposit.js +78 -0
  38. package/dist/commands/deposit.js.map +1 -0
  39. package/dist/commands/deposit.test.d.ts +2 -0
  40. package/dist/commands/deposit.test.d.ts.map +1 -0
  41. package/dist/commands/deposit.test.js +93 -0
  42. package/dist/commands/deposit.test.js.map +1 -0
  43. package/dist/commands/dev.d.ts +3 -0
  44. package/dist/commands/dev.d.ts.map +1 -0
  45. package/dist/commands/dev.js +188 -0
  46. package/dist/commands/dev.js.map +1 -0
  47. package/dist/commands/dev.test.d.ts +2 -0
  48. package/dist/commands/dev.test.d.ts.map +1 -0
  49. package/dist/commands/dev.test.js +89 -0
  50. package/dist/commands/dev.test.js.map +1 -0
  51. package/dist/commands/getting-started-steps.d.ts +12 -0
  52. package/dist/commands/getting-started-steps.d.ts.map +1 -0
  53. package/dist/commands/getting-started-steps.js +163 -0
  54. package/dist/commands/getting-started-steps.js.map +1 -0
  55. package/dist/commands/getting-started.d.ts +9 -0
  56. package/dist/commands/getting-started.d.ts.map +1 -0
  57. package/dist/commands/getting-started.js +44 -0
  58. package/dist/commands/getting-started.js.map +1 -0
  59. package/dist/commands/init.d.ts +9 -0
  60. package/dist/commands/init.d.ts.map +1 -0
  61. package/dist/commands/init.js +74 -0
  62. package/dist/commands/init.js.map +1 -0
  63. package/dist/commands/init.test.d.ts +2 -0
  64. package/dist/commands/init.test.d.ts.map +1 -0
  65. package/dist/commands/init.test.js +115 -0
  66. package/dist/commands/init.test.js.map +1 -0
  67. package/dist/commands/jobs.d.ts +11 -0
  68. package/dist/commands/jobs.d.ts.map +1 -0
  69. package/dist/commands/jobs.js +370 -0
  70. package/dist/commands/jobs.js.map +1 -0
  71. package/dist/commands/listings/create.d.ts +4 -0
  72. package/dist/commands/listings/create.d.ts.map +1 -0
  73. package/dist/commands/listings/create.js +133 -0
  74. package/dist/commands/listings/create.js.map +1 -0
  75. package/dist/commands/listings/delete.d.ts +4 -0
  76. package/dist/commands/listings/delete.d.ts.map +1 -0
  77. package/dist/commands/listings/delete.js +32 -0
  78. package/dist/commands/listings/delete.js.map +1 -0
  79. package/dist/commands/listings/docs.d.ts +4 -0
  80. package/dist/commands/listings/docs.d.ts.map +1 -0
  81. package/dist/commands/listings/docs.js +48 -0
  82. package/dist/commands/listings/docs.js.map +1 -0
  83. package/dist/commands/listings/headers.d.ts +4 -0
  84. package/dist/commands/listings/headers.d.ts.map +1 -0
  85. package/dist/commands/listings/headers.js +78 -0
  86. package/dist/commands/listings/headers.js.map +1 -0
  87. package/dist/commands/listings/helpers.d.ts +10 -0
  88. package/dist/commands/listings/helpers.d.ts.map +1 -0
  89. package/dist/commands/listings/helpers.js +64 -0
  90. package/dist/commands/listings/helpers.js.map +1 -0
  91. package/dist/commands/listings/index.d.ts +11 -0
  92. package/dist/commands/listings/index.d.ts.map +1 -0
  93. package/dist/commands/listings/index.js +46 -0
  94. package/dist/commands/listings/index.js.map +1 -0
  95. package/dist/commands/listings/list.d.ts +4 -0
  96. package/dist/commands/listings/list.d.ts.map +1 -0
  97. package/dist/commands/listings/list.js +42 -0
  98. package/dist/commands/listings/list.js.map +1 -0
  99. package/dist/commands/listings/pause-unpause.d.ts +6 -0
  100. package/dist/commands/listings/pause-unpause.d.ts.map +1 -0
  101. package/dist/commands/listings/pause-unpause.js +37 -0
  102. package/dist/commands/listings/pause-unpause.js.map +1 -0
  103. package/dist/commands/listings/rotate-key.d.ts +4 -0
  104. package/dist/commands/listings/rotate-key.d.ts.map +1 -0
  105. package/dist/commands/listings/rotate-key.js +62 -0
  106. package/dist/commands/listings/rotate-key.js.map +1 -0
  107. package/dist/commands/listings/update.d.ts +4 -0
  108. package/dist/commands/listings/update.d.ts.map +1 -0
  109. package/dist/commands/listings/update.js +57 -0
  110. package/dist/commands/listings/update.js.map +1 -0
  111. package/dist/commands/listings.d.ts +2 -0
  112. package/dist/commands/listings.d.ts.map +1 -0
  113. package/dist/commands/listings.js +3 -0
  114. package/dist/commands/listings.js.map +1 -0
  115. package/dist/commands/listings.test.d.ts +2 -0
  116. package/dist/commands/listings.test.d.ts.map +1 -0
  117. package/dist/commands/listings.test.js +166 -0
  118. package/dist/commands/listings.test.js.map +1 -0
  119. package/dist/commands/pricing.d.ts +9 -0
  120. package/dist/commands/pricing.d.ts.map +1 -0
  121. package/dist/commands/pricing.js +67 -0
  122. package/dist/commands/pricing.js.map +1 -0
  123. package/dist/commands/pricing.test.d.ts +2 -0
  124. package/dist/commands/pricing.test.d.ts.map +1 -0
  125. package/dist/commands/pricing.test.js +87 -0
  126. package/dist/commands/pricing.test.js.map +1 -0
  127. package/dist/commands/proxy.d.ts +14 -0
  128. package/dist/commands/proxy.d.ts.map +1 -0
  129. package/dist/commands/proxy.js +138 -0
  130. package/dist/commands/proxy.js.map +1 -0
  131. package/dist/commands/proxy.test.d.ts +2 -0
  132. package/dist/commands/proxy.test.d.ts.map +1 -0
  133. package/dist/commands/proxy.test.js +235 -0
  134. package/dist/commands/proxy.test.js.map +1 -0
  135. package/dist/commands/rate.d.ts +3 -0
  136. package/dist/commands/rate.d.ts.map +1 -0
  137. package/dist/commands/rate.js +46 -0
  138. package/dist/commands/rate.js.map +1 -0
  139. package/dist/commands/rate.test.d.ts +2 -0
  140. package/dist/commands/rate.test.d.ts.map +1 -0
  141. package/dist/commands/rate.test.js +74 -0
  142. package/dist/commands/rate.test.js.map +1 -0
  143. package/dist/commands/services.d.ts +3 -0
  144. package/dist/commands/services.d.ts.map +1 -0
  145. package/dist/commands/services.js +48 -0
  146. package/dist/commands/services.js.map +1 -0
  147. package/dist/commands/services.test.d.ts +2 -0
  148. package/dist/commands/services.test.d.ts.map +1 -0
  149. package/dist/commands/services.test.js +87 -0
  150. package/dist/commands/services.test.js.map +1 -0
  151. package/dist/commands/settlements.d.ts +3 -0
  152. package/dist/commands/settlements.d.ts.map +1 -0
  153. package/dist/commands/settlements.js +79 -0
  154. package/dist/commands/settlements.js.map +1 -0
  155. package/dist/commands/settlements.test.d.ts +2 -0
  156. package/dist/commands/settlements.test.d.ts.map +1 -0
  157. package/dist/commands/settlements.test.js +98 -0
  158. package/dist/commands/settlements.test.js.map +1 -0
  159. package/dist/commands/skills.d.ts +3 -0
  160. package/dist/commands/skills.d.ts.map +1 -0
  161. package/dist/commands/skills.js +96 -0
  162. package/dist/commands/skills.js.map +1 -0
  163. package/dist/commands/skills.test.d.ts +2 -0
  164. package/dist/commands/skills.test.d.ts.map +1 -0
  165. package/dist/commands/skills.test.js +89 -0
  166. package/dist/commands/skills.test.js.map +1 -0
  167. package/dist/commands/test-service.d.ts +3 -0
  168. package/dist/commands/test-service.d.ts.map +1 -0
  169. package/dist/commands/test-service.js +200 -0
  170. package/dist/commands/test-service.js.map +1 -0
  171. package/dist/commands/test-service.test.d.ts +2 -0
  172. package/dist/commands/test-service.test.d.ts.map +1 -0
  173. package/dist/commands/test-service.test.js +119 -0
  174. package/dist/commands/test-service.test.js.map +1 -0
  175. package/dist/commands/tunnel-handlers.d.ts +19 -0
  176. package/dist/commands/tunnel-handlers.d.ts.map +1 -0
  177. package/dist/commands/tunnel-handlers.js +103 -0
  178. package/dist/commands/tunnel-handlers.js.map +1 -0
  179. package/dist/commands/tunnel.d.ts +7 -0
  180. package/dist/commands/tunnel.d.ts.map +1 -0
  181. package/dist/commands/tunnel.js +184 -0
  182. package/dist/commands/tunnel.js.map +1 -0
  183. package/dist/commands/usage.d.ts +9 -0
  184. package/dist/commands/usage.d.ts.map +1 -0
  185. package/dist/commands/usage.js +78 -0
  186. package/dist/commands/usage.js.map +1 -0
  187. package/dist/commands/usage.test.d.ts +2 -0
  188. package/dist/commands/usage.test.d.ts.map +1 -0
  189. package/dist/commands/usage.test.js +102 -0
  190. package/dist/commands/usage.test.js.map +1 -0
  191. package/dist/commands/withdraw-confirm.d.ts +10 -0
  192. package/dist/commands/withdraw-confirm.d.ts.map +1 -0
  193. package/dist/commands/withdraw-confirm.js +51 -0
  194. package/dist/commands/withdraw-confirm.js.map +1 -0
  195. package/dist/commands/withdraw-confirm.test.d.ts +2 -0
  196. package/dist/commands/withdraw-confirm.test.d.ts.map +1 -0
  197. package/dist/commands/withdraw-confirm.test.js +75 -0
  198. package/dist/commands/withdraw-confirm.test.js.map +1 -0
  199. package/dist/commands/withdraw.d.ts +9 -0
  200. package/dist/commands/withdraw.d.ts.map +1 -0
  201. package/dist/commands/withdraw.js +78 -0
  202. package/dist/commands/withdraw.js.map +1 -0
  203. package/dist/commands/withdraw.test.d.ts +2 -0
  204. package/dist/commands/withdraw.test.d.ts.map +1 -0
  205. package/dist/commands/withdraw.test.js +96 -0
  206. package/dist/commands/withdraw.test.js.map +1 -0
  207. package/dist/config.d.ts +20 -0
  208. package/dist/config.d.ts.map +1 -0
  209. package/dist/config.js +38 -0
  210. package/dist/config.js.map +1 -0
  211. package/dist/config.test.d.ts +2 -0
  212. package/dist/config.test.d.ts.map +1 -0
  213. package/dist/config.test.js +54 -0
  214. package/dist/config.test.js.map +1 -0
  215. package/dist/format.d.ts +46 -0
  216. package/dist/format.d.ts.map +1 -0
  217. package/dist/format.js +101 -0
  218. package/dist/format.js.map +1 -0
  219. package/dist/format.test.d.ts +2 -0
  220. package/dist/format.test.d.ts.map +1 -0
  221. package/dist/format.test.js +85 -0
  222. package/dist/format.test.js.map +1 -0
  223. package/dist/generated/skills.d.ts +2 -0
  224. package/dist/generated/skills.d.ts.map +1 -0
  225. package/dist/generated/skills.js +23 -0
  226. package/dist/generated/skills.js.map +1 -0
  227. package/dist/helpers.d.ts +12 -0
  228. package/dist/helpers.d.ts.map +1 -0
  229. package/dist/helpers.js +21 -0
  230. package/dist/helpers.js.map +1 -0
  231. package/dist/helpers.test.d.ts +2 -0
  232. package/dist/helpers.test.d.ts.map +1 -0
  233. package/dist/helpers.test.js +59 -0
  234. package/dist/helpers.test.js.map +1 -0
  235. package/dist/index.d.ts +3 -0
  236. package/dist/index.d.ts.map +1 -0
  237. package/dist/index.js +70 -0
  238. package/dist/index.js.map +1 -0
  239. package/package.json +61 -0
  240. package/templates/http-api/README.md +20 -0
  241. package/templates/http-api/package.json +21 -0
  242. package/templates/http-api/proxygate.tunnel.yaml +9 -0
  243. package/templates/http-api/src/index.ts +77 -0
  244. package/templates/http-api/tsconfig.json +14 -0
  245. package/templates/llm-agent/README.md +23 -0
  246. package/templates/llm-agent/package.json +22 -0
  247. package/templates/llm-agent/proxygate.tunnel.yaml +13 -0
  248. package/templates/llm-agent/src/index.ts +142 -0
  249. package/templates/llm-agent/tsconfig.json +14 -0
@@ -0,0 +1,370 @@
1
+ import { ProxyGateError } from '@proxygate/sdk';
2
+ import { getClient } from '../helpers.js';
3
+ import { bold, dim, green, yellow, cyan, red, formatTable, formatUsdc, formatWallet } from '../format.js';
4
+ // ---------------------------------------------------------------------------
5
+ // Helpers
6
+ // ---------------------------------------------------------------------------
7
+ /** Truncate a string to N chars, adding "..." if truncated. */
8
+ function truncate(str, n) {
9
+ return str.length > n ? str.slice(0, n - 3) + '...' : str;
10
+ }
11
+ /** Standard error handler matching existing CLI pattern. */
12
+ function handleError(err) {
13
+ if (err instanceof ProxyGateError) {
14
+ console.error(red(`Error [${err.code}]: ${err.message}`));
15
+ if (err.action)
16
+ console.error(dim(`Suggestion: ${err.action}`));
17
+ process.exit(1);
18
+ }
19
+ if (err instanceof Error) {
20
+ console.error(red(`Error: ${err.message}`));
21
+ process.exit(1);
22
+ }
23
+ throw err;
24
+ }
25
+ /** Lazy-load @inquirer/prompts to avoid import overhead for non-interactive use. */
26
+ async function loadPrompts() {
27
+ return import('@inquirer/prompts');
28
+ }
29
+ /** Format a status string with color. */
30
+ function colorStatus(status) {
31
+ switch (status) {
32
+ case 'open': return green(status);
33
+ case 'claimed': return cyan(status);
34
+ case 'in_review': return yellow(status);
35
+ case 'completed': return green(status);
36
+ case 'cancelled':
37
+ case 'refunded': return dim(status);
38
+ default: return status;
39
+ }
40
+ }
41
+ // ---------------------------------------------------------------------------
42
+ // Subcommands
43
+ // ---------------------------------------------------------------------------
44
+ function registerListSubcommand(jobs, program) {
45
+ jobs
46
+ .command('list')
47
+ .description('List jobs on the bounty board')
48
+ .option('--status <status>', 'Filter by status (open, claimed, in_review, completed, cancelled, refunded)')
49
+ .option('--category <cat>', 'Filter by category')
50
+ .option('--search <text>', 'Search title/description')
51
+ .option('--interaction-type <type>', 'Filter by interaction type (M2M, H2M, M2H)')
52
+ .option('--limit <n>', 'Limit results')
53
+ .option('--table', 'Display in human-readable table format')
54
+ .action(async (opts) => {
55
+ const parentOpts = program.opts();
56
+ try {
57
+ const client = await getClient(parentOpts);
58
+ const result = await client.jobs.list({
59
+ status: opts.status,
60
+ category: opts.category,
61
+ interaction_type: opts.interactionType,
62
+ search: opts.search,
63
+ limit: opts.limit ? parseInt(opts.limit, 10) : undefined,
64
+ });
65
+ if (opts.table) {
66
+ if (result.jobs.length === 0) {
67
+ console.log(dim('No jobs found.'));
68
+ return;
69
+ }
70
+ console.log(bold(`Jobs (${result.total} total)`));
71
+ console.log();
72
+ const headers = ['ID', 'Title', 'Status', 'Reward', 'Poster', 'Created'];
73
+ const rows = result.jobs.map((j) => [
74
+ j.id.slice(0, 8),
75
+ truncate(j.title, 40),
76
+ colorStatus(j.status),
77
+ formatUsdc(j.reward_lamports),
78
+ formatWallet(j.poster_wallet),
79
+ new Date(j.created_at).toLocaleDateString(),
80
+ ]);
81
+ console.log(formatTable(headers, rows));
82
+ return;
83
+ }
84
+ console.log(JSON.stringify(result, null, 2));
85
+ }
86
+ catch (err) {
87
+ handleError(err);
88
+ }
89
+ });
90
+ }
91
+ function registerGetSubcommand(jobs, program) {
92
+ jobs
93
+ .command('get <id>')
94
+ .description('Get details for a specific job')
95
+ .option('--table', 'Display in human-readable format')
96
+ .action(async (id, opts) => {
97
+ const parentOpts = program.opts();
98
+ try {
99
+ const client = await getClient(parentOpts);
100
+ const job = await client.jobs.get(id);
101
+ if (opts.table) {
102
+ console.log(bold(job.title));
103
+ console.log();
104
+ console.log(` ${dim('ID:')} ${job.id}`);
105
+ console.log(` ${dim('Status:')} ${colorStatus(job.status)}`);
106
+ console.log(` ${dim('Type:')} ${job.interaction_type}`);
107
+ console.log(` ${dim('Reward:')} ${formatUsdc(job.reward_lamports)}`);
108
+ console.log(` ${dim('Total cost:')} ${formatUsdc(job.total_cost)}`);
109
+ console.log(` ${dim('Buyer fee:')} ${formatUsdc(job.buyer_fee)}`);
110
+ console.log(` ${dim('Seller fee:')} ${formatUsdc(job.seller_fee)}`);
111
+ console.log(` ${dim('Poster:')} ${job.poster_wallet}`);
112
+ if (job.solver_wallet)
113
+ console.log(` ${dim('Solver:')} ${job.solver_wallet}`);
114
+ if (job.category)
115
+ console.log(` ${dim('Category:')} ${job.category}`);
116
+ if (job.deadline)
117
+ console.log(` ${dim('Deadline:')} ${job.deadline}`);
118
+ console.log(` ${dim('Rejections:')} ${job.rejection_count}`);
119
+ console.log(` ${dim('Created:')} ${job.created_at}`);
120
+ if (job.claimed_at)
121
+ console.log(` ${dim('Claimed:')} ${job.claimed_at}`);
122
+ if (job.completed_at)
123
+ console.log(` ${dim('Completed:')} ${job.completed_at}`);
124
+ console.log();
125
+ console.log(dim('Description:'));
126
+ console.log(job.description);
127
+ if (job.submission) {
128
+ console.log();
129
+ console.log(bold('Submission'));
130
+ console.log(` ${dim('ID:')} ${job.submission.id}`);
131
+ console.log(` ${dim('Status:')} ${job.submission.status}`);
132
+ console.log(` ${dim('Solver:')} ${job.submission.solver_wallet}`);
133
+ if (job.submission.result_url)
134
+ console.log(` ${dim('URL:')} ${job.submission.result_url}`);
135
+ console.log(` ${dim('Submitted:')} ${job.submission.created_at}`);
136
+ console.log();
137
+ console.log(dim('Result:'));
138
+ console.log(job.submission.result_text);
139
+ }
140
+ return;
141
+ }
142
+ console.log(JSON.stringify(job, null, 2));
143
+ }
144
+ catch (err) {
145
+ handleError(err);
146
+ }
147
+ });
148
+ }
149
+ function registerCreateSubcommand(jobs, program) {
150
+ jobs
151
+ .command('create')
152
+ .description('Post a new job to the bounty board')
153
+ .option('--non-interactive', 'Use CLI flags instead of interactive prompts')
154
+ .option('--title <title>', 'Job title')
155
+ .option('--description <desc>', 'Job description')
156
+ .option('--reward <usdc>', 'Reward amount in USDC (e.g. 10.5)')
157
+ .option('--category <cat>', 'Category slug')
158
+ .option('--interaction-type <type>', 'Interaction type: M2M, H2M, M2H (default: M2M)')
159
+ .option('--deadline <iso>', 'Deadline as ISO 8601 date string')
160
+ .action(async (opts) => {
161
+ const parentOpts = program.opts();
162
+ try {
163
+ const client = await getClient(parentOpts);
164
+ const createOpts = opts.nonInteractive
165
+ ? buildNonInteractiveOpts(opts)
166
+ : await runInteractiveCreate();
167
+ if (!createOpts)
168
+ return;
169
+ const result = await client.jobs.create(createOpts);
170
+ console.log(JSON.stringify(result, null, 2));
171
+ }
172
+ catch (err) {
173
+ handleError(err);
174
+ }
175
+ });
176
+ }
177
+ function buildNonInteractiveOpts(o) {
178
+ if (!o.title) {
179
+ console.error(red('Error: --title is required in non-interactive mode'));
180
+ process.exit(1);
181
+ }
182
+ if (!o.description) {
183
+ console.error(red('Error: --description is required in non-interactive mode'));
184
+ process.exit(1);
185
+ }
186
+ if (!o.reward) {
187
+ console.error(red('Error: --reward is required in non-interactive mode'));
188
+ process.exit(1);
189
+ }
190
+ return {
191
+ title: o.title,
192
+ description: o.description,
193
+ reward_usdc: parseFloat(o.reward),
194
+ ...(o.category ? { category: o.category } : {}),
195
+ ...(o.interactionType ? { interaction_type: o.interactionType } : {}),
196
+ ...(o.deadline ? { deadline: o.deadline } : {}),
197
+ };
198
+ }
199
+ async function runInteractiveCreate() {
200
+ const { input, select, confirm } = await loadPrompts();
201
+ const title = await input({ message: 'Job title:' });
202
+ const description = await input({ message: 'Description:' });
203
+ const rewardStr = await input({ message: 'Reward (USDC):', default: '10' });
204
+ const rewardUsdc = parseFloat(rewardStr);
205
+ const category = (await input({ message: 'Category (optional, press Enter to skip):' })) || undefined;
206
+ const interactionType = await select({
207
+ message: 'Interaction type:',
208
+ choices: [
209
+ { value: 'M2M', name: 'M2M (Machine to Machine)' },
210
+ { value: 'H2M', name: 'H2M (Human to Machine)' },
211
+ { value: 'M2H', name: 'M2H (Machine to Human)' },
212
+ ],
213
+ });
214
+ const deadline = (await input({ message: 'Deadline ISO 8601 (optional, press Enter to skip):' })) || undefined;
215
+ console.log();
216
+ console.log(bold('Review:'));
217
+ console.log(` Title: ${title}`);
218
+ console.log(` Description: ${truncate(description, 60)}`);
219
+ console.log(` Reward: ${rewardUsdc} USDC`);
220
+ console.log(` Type: ${interactionType}`);
221
+ if (category)
222
+ console.log(` Category: ${category}`);
223
+ if (deadline)
224
+ console.log(` Deadline: ${deadline}`);
225
+ console.log();
226
+ const confirmed = await confirm({ message: 'Post this job?' });
227
+ if (!confirmed) {
228
+ console.log(dim('Cancelled.'));
229
+ return null;
230
+ }
231
+ return {
232
+ title, description, reward_usdc: rewardUsdc,
233
+ interaction_type: interactionType,
234
+ ...(category ? { category } : {}),
235
+ ...(deadline ? { deadline } : {}),
236
+ };
237
+ }
238
+ function registerClaimSubcommand(jobs, program) {
239
+ jobs
240
+ .command('claim <id>')
241
+ .description('Claim an open job as solver')
242
+ .action(async (id) => {
243
+ const parentOpts = program.opts();
244
+ try {
245
+ const client = await getClient(parentOpts);
246
+ const result = await client.jobs.claim(id);
247
+ console.log(JSON.stringify(result, null, 2));
248
+ }
249
+ catch (err) {
250
+ handleError(err);
251
+ }
252
+ });
253
+ }
254
+ function registerSubmitSubcommand(jobs, program) {
255
+ jobs
256
+ .command('submit <id>')
257
+ .description('Submit work for a claimed job')
258
+ .option('--text <text>', 'Result text (markdown)')
259
+ .option('--url <url>', 'Result URL (e.g. GitHub PR link)')
260
+ .action(async (id, opts) => {
261
+ const parentOpts = program.opts();
262
+ try {
263
+ const client = await getClient(parentOpts);
264
+ let resultText = opts.text;
265
+ let resultUrl = opts.url;
266
+ if (!resultText) {
267
+ const { input } = await loadPrompts();
268
+ resultText = await input({ message: 'Result text (markdown):' });
269
+ if (!resultUrl) {
270
+ resultUrl = (await input({ message: 'Result URL (optional, press Enter to skip):' })) || undefined;
271
+ }
272
+ }
273
+ const result = await client.jobs.submit(id, {
274
+ result_text: resultText,
275
+ ...(resultUrl ? { result_url: resultUrl } : {}),
276
+ });
277
+ console.log(JSON.stringify(result, null, 2));
278
+ }
279
+ catch (err) {
280
+ handleError(err);
281
+ }
282
+ });
283
+ }
284
+ function registerAcceptSubcommand(jobs, program) {
285
+ jobs
286
+ .command('accept <id>')
287
+ .description('Accept a submission and release escrow to solver')
288
+ .action(async (id) => {
289
+ const parentOpts = program.opts();
290
+ try {
291
+ const client = await getClient(parentOpts);
292
+ const result = await client.jobs.accept(id);
293
+ console.log(JSON.stringify(result, null, 2));
294
+ }
295
+ catch (err) {
296
+ handleError(err);
297
+ }
298
+ });
299
+ }
300
+ function registerRejectSubcommand(jobs, program) {
301
+ jobs
302
+ .command('reject <id>')
303
+ .description('Reject a submission (auto-releases escrow on 2nd rejection)')
304
+ .action(async (id) => {
305
+ const parentOpts = program.opts();
306
+ try {
307
+ const client = await getClient(parentOpts);
308
+ const result = await client.jobs.reject(id);
309
+ console.log(JSON.stringify(result, null, 2));
310
+ }
311
+ catch (err) {
312
+ handleError(err);
313
+ }
314
+ });
315
+ }
316
+ function registerCancelSubcommand(jobs, program) {
317
+ jobs
318
+ .command('cancel <id>')
319
+ .description('Cancel a job and refund escrow')
320
+ .action(async (id) => {
321
+ const parentOpts = program.opts();
322
+ try {
323
+ const client = await getClient(parentOpts);
324
+ const result = await client.jobs.cancel(id);
325
+ console.log(JSON.stringify(result, null, 2));
326
+ }
327
+ catch (err) {
328
+ handleError(err);
329
+ }
330
+ });
331
+ }
332
+ // ---------------------------------------------------------------------------
333
+ // Registration
334
+ // ---------------------------------------------------------------------------
335
+ /**
336
+ * Register the `proxygate jobs` command group.
337
+ *
338
+ * Provides 8 subcommands for the bounty board:
339
+ * list, get, create, claim, submit, accept, reject, cancel.
340
+ *
341
+ * JSON output by default; use --table for human-readable output.
342
+ */
343
+ export function registerJobsCommand(program) {
344
+ const jobs = program
345
+ .command('jobs')
346
+ .description('Interact with the bounty board (list, post, claim, submit, accept, reject, cancel)')
347
+ .addHelpText('after', '\nSubcommands:\n' +
348
+ ' list List jobs on the bounty board\n' +
349
+ ' get <id> Get job details\n' +
350
+ ' create Post a new job (interactive)\n' +
351
+ ' claim <id> Claim an open job\n' +
352
+ ' submit <id> Submit work for a job\n' +
353
+ ' accept <id> Accept submission, release escrow\n' +
354
+ ' reject <id> Reject submission\n' +
355
+ ' cancel <id> Cancel job, refund escrow\n\n' +
356
+ 'Examples:\n' +
357
+ ' $ proxygate jobs list JSON output (default)\n' +
358
+ ' $ proxygate jobs list --status open --table Table format\n' +
359
+ ' $ proxygate jobs create Interactive mode\n' +
360
+ ' $ proxygate jobs create --non-interactive --title "..." --description "..." --reward 10\n');
361
+ registerListSubcommand(jobs, program);
362
+ registerGetSubcommand(jobs, program);
363
+ registerCreateSubcommand(jobs, program);
364
+ registerClaimSubcommand(jobs, program);
365
+ registerSubmitSubcommand(jobs, program);
366
+ registerAcceptSubcommand(jobs, program);
367
+ registerRejectSubcommand(jobs, program);
368
+ registerCancelSubcommand(jobs, program);
369
+ }
370
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings create` subcommand. */
3
+ export declare function registerCreateSubcommand(listings: Command, program: Command): void;
4
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCzC,iDAAiD;AACjD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAyClF"}
@@ -0,0 +1,133 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { getClient } from '../../helpers.js';
3
+ import { bold, red, dim } from '../../format.js';
4
+ import { truncate, handleError, loadPrompts, promptCredentials } from './helpers.js';
5
+ /** Register the `listings create` subcommand. */
6
+ export function registerCreateSubcommand(listings, program) {
7
+ listings
8
+ .command('create')
9
+ .description('Create a new seller listing')
10
+ .option('--non-interactive', 'Use CLI flags instead of interactive prompts')
11
+ .option('--service-name <name>', 'Service name')
12
+ .option('--base-url <url>', 'Service base URL (https://...)')
13
+ .option('--auth-pattern <pattern>', 'Auth pattern: bearer, header, query, basic, oauth2_cc')
14
+ .option('--api-key <key>', 'API key (for bearer/header/query/basic)')
15
+ .option('--header-name <name>', 'Custom header name (for header auth pattern)')
16
+ .option('--query-param <name>', 'Query parameter name (for query auth pattern)')
17
+ .option('--basic-user <user>', 'Basic auth username')
18
+ .option('--oauth2-flow-type <type>', 'OAuth2 flow: standard, google_jwt')
19
+ .option('--oauth2-token-url <url>', 'OAuth2 token URL')
20
+ .option('--oauth2-scopes <scopes>', 'OAuth2 scopes (space-separated)')
21
+ .option('--oauth2-client-id <id>', 'OAuth2 client ID')
22
+ .option('--oauth2-client-secret <secret>', 'OAuth2 client secret')
23
+ .option('--oauth2-service-account-json <path>', 'Google service account JSON path')
24
+ .option('--total-rpm <n>', 'Total RPM capacity', '60')
25
+ .option('--reserved-rpm <n>', 'Reserved RPM (for own use)', '0')
26
+ .option('--price <n>', 'Price per request in micro-cents', '1000')
27
+ .option('--categories <slugs>', 'Category slugs (comma-separated)')
28
+ .option('--description <text>', 'Listing description')
29
+ .option('--allowed-paths <paths>', 'Allowed paths (comma-separated)')
30
+ .option('--endpoints <file>', 'Path to JSON file containing EndpointSpec[]')
31
+ .option('--validation-endpoint <path>', 'Validation endpoint path')
32
+ .option('--shield <on|off>', 'Enable Shield request scanning (protects your API from malicious input) (default: off)')
33
+ .action(async (opts) => {
34
+ const parentOpts = program.opts();
35
+ try {
36
+ const client = await getClient(parentOpts);
37
+ const createOpts = opts.nonInteractive
38
+ ? await buildNonInteractiveOpts(opts)
39
+ : await runInteractiveCreate();
40
+ if (!createOpts)
41
+ return;
42
+ const result = await client.listings.create(createOpts);
43
+ console.log(JSON.stringify(result, null, 2));
44
+ }
45
+ catch (err) {
46
+ handleError(err);
47
+ }
48
+ });
49
+ }
50
+ async function buildNonInteractiveOpts(o) {
51
+ if (!o.serviceName) {
52
+ console.error(red('Error: --service-name is required in non-interactive mode'));
53
+ process.exit(1);
54
+ }
55
+ if (!o.baseUrl) {
56
+ console.error(red('Error: --base-url is required in non-interactive mode'));
57
+ process.exit(1);
58
+ }
59
+ if (!o.categories) {
60
+ console.error(red('Error: --categories is required in non-interactive mode'));
61
+ process.exit(1);
62
+ }
63
+ return {
64
+ service_name: o.serviceName, service_base_url: o.baseUrl,
65
+ auth_pattern: o.authPattern ?? 'bearer',
66
+ total_rpm: parseInt(o.totalRpm, 10), reserved_rpm: parseInt(o.reservedRpm, 10),
67
+ price_per_request: parseInt(o.price, 10),
68
+ category_slugs: o.categories.split(',').map((s) => s.trim()),
69
+ ...(o.description ? { description: o.description } : {}),
70
+ ...(o.apiKey ? { api_key: o.apiKey } : {}),
71
+ ...(o.headerName ? { header_name: o.headerName } : {}),
72
+ ...(o.queryParam ? { query_param: o.queryParam } : {}),
73
+ ...(o.basicUser ? { basic_user: o.basicUser } : {}),
74
+ ...(o.oauth2FlowType ? { oauth2_flow_type: o.oauth2FlowType } : {}),
75
+ ...(o.oauth2TokenUrl ? { oauth2_token_url: o.oauth2TokenUrl } : {}),
76
+ ...(o.oauth2Scopes ? { oauth2_scopes: o.oauth2Scopes } : {}),
77
+ ...(o.oauth2ClientId ? { oauth2_client_id: o.oauth2ClientId } : {}),
78
+ ...(o.oauth2ClientSecret ? { oauth2_client_secret: o.oauth2ClientSecret } : {}),
79
+ ...(o.oauth2ServiceAccountJson ? { oauth2_service_account_json: await readFile(o.oauth2ServiceAccountJson, 'utf-8') } : {}),
80
+ ...(o.allowedPaths ? { allowed_paths: o.allowedPaths.split(',').map((s) => s.trim()) } : {}),
81
+ ...(o.endpoints ? { endpoints: JSON.parse(await readFile(o.endpoints, 'utf-8')) } : {}),
82
+ ...(o.validationEndpoint ? { validation_endpoint: o.validationEndpoint } : {}),
83
+ ...(o.shield === 'on' ? { shield_enabled: true } : {}),
84
+ };
85
+ }
86
+ async function runInteractiveCreate() {
87
+ const { input, select, confirm } = await loadPrompts();
88
+ const serviceName = await input({ message: 'Service name:' });
89
+ const baseUrl = await input({ message: 'Service base URL (https://):' });
90
+ const authPattern = await select({
91
+ message: 'Auth pattern:',
92
+ choices: [
93
+ { value: 'bearer', name: 'Bearer token (Authorization: Bearer ...)' },
94
+ { value: 'header', name: 'Custom header (X-Api-Key: ...)' },
95
+ { value: 'query', name: 'Query parameter (?api_key=...)' },
96
+ { value: 'basic', name: 'Basic auth (Authorization: Basic ...)' },
97
+ { value: 'oauth2_cc', name: 'OAuth2 client credentials' },
98
+ ],
99
+ });
100
+ const credentials = await promptCredentials(authPattern);
101
+ const totalRpm = parseInt(await input({ message: 'Total RPM capacity:', default: '60' }), 10);
102
+ const reservedRpm = parseInt(await input({ message: 'Reserved RPM (for your own use):', default: '0' }), 10);
103
+ const pricePerRequest = parseInt(await input({ message: 'Price per request (micro-cents):', default: '1000' }), 10);
104
+ const categorySlugs = (await input({ message: 'Category slugs (comma-separated, e.g. "llm,ai"):' }))
105
+ .split(',').map((s) => s.trim()).filter(Boolean);
106
+ const description = (await input({ message: 'Description (optional, press Enter to skip):' })) || undefined;
107
+ const shieldEnabled = await confirm({ message: 'Enable Shield request scanning? (protects your API from malicious input)', default: false });
108
+ console.log();
109
+ console.log(bold('Review:'));
110
+ console.log(` Service: ${serviceName}`);
111
+ console.log(` Base URL: ${baseUrl}`);
112
+ console.log(` Auth: ${authPattern}`);
113
+ console.log(` RPM: ${totalRpm} (reserved: ${reservedRpm})`);
114
+ console.log(` Price: ${pricePerRequest} micro-cents/req`);
115
+ console.log(` Categories: ${categorySlugs.join(', ')}`);
116
+ if (description)
117
+ console.log(` Description: ${truncate(description, 60)}`);
118
+ if (shieldEnabled)
119
+ console.log(` Shield: enabled`);
120
+ console.log();
121
+ const confirmed = await confirm({ message: 'Create this listing?' });
122
+ if (!confirmed) {
123
+ console.log(dim('Cancelled.'));
124
+ return null;
125
+ }
126
+ return {
127
+ service_name: serviceName, service_base_url: baseUrl, auth_pattern: authPattern,
128
+ total_rpm: totalRpm, reserved_rpm: reservedRpm, price_per_request: pricePerRequest,
129
+ category_slugs: categorySlugs, ...(description ? { description } : {}), ...credentials,
130
+ ...(shieldEnabled ? { shield_enabled: true } : {}),
131
+ };
132
+ }
133
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/listings/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings delete` subcommand. */
3
+ export declare function registerDeleteSubcommand(listings: Command, program: Command): void;
4
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,iDAAiD;AACjD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA2BlF"}
@@ -0,0 +1,32 @@
1
+ import { getClient } from '../../helpers.js';
2
+ import { dim } from '../../format.js';
3
+ import { handleError, loadPrompts } from './helpers.js';
4
+ /** Register the `listings delete` subcommand. */
5
+ export function registerDeleteSubcommand(listings, program) {
6
+ listings
7
+ .command('delete <id>')
8
+ .description('Delete a listing (removes API key from Secret Manager)')
9
+ .option('-y, --yes', 'Skip confirmation prompt')
10
+ .action(async (id, opts) => {
11
+ const parentOpts = program.opts();
12
+ try {
13
+ if (!opts.yes) {
14
+ const { confirm } = await loadPrompts();
15
+ const confirmed = await confirm({
16
+ message: 'Are you sure? This will delete the API key from Secret Manager.',
17
+ });
18
+ if (!confirmed) {
19
+ console.log(dim('Cancelled.'));
20
+ return;
21
+ }
22
+ }
23
+ const client = await getClient(parentOpts);
24
+ const result = await client.listings.delete(id);
25
+ console.log(JSON.stringify(result, null, 2));
26
+ }
27
+ catch (err) {
28
+ handleError(err);
29
+ }
30
+ });
31
+ }
32
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/listings/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExD,iDAAiD;AACjD,MAAM,UAAU,wBAAwB,CAAC,QAAiB,EAAE,OAAgB;IAC1E,QAAQ;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAuB,EAAE,EAAE;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;oBAC9B,OAAO,EAAE,iEAAiE;iBAC3E,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;oBAC/B,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ /** Register the `listings docs` subcommand. */
3
+ export declare function registerDocsSubcommand(listings: Command, program: Command): void;
4
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/commands/listings/docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,+CAA+C;AAC/C,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA6ChF"}