@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.
- package/LICENSE +17 -0
- package/README.md +311 -0
- package/dist/commands/apis.d.ts +3 -0
- package/dist/commands/apis.d.ts.map +1 -0
- package/dist/commands/apis.js +68 -0
- package/dist/commands/apis.js.map +1 -0
- package/dist/commands/apis.test.d.ts +2 -0
- package/dist/commands/apis.test.d.ts.map +1 -0
- package/dist/commands/apis.test.js +103 -0
- package/dist/commands/apis.test.js.map +1 -0
- package/dist/commands/balance.d.ts +9 -0
- package/dist/commands/balance.d.ts.map +1 -0
- package/dist/commands/balance.js +50 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/balance.test.d.ts +2 -0
- package/dist/commands/balance.test.d.ts.map +1 -0
- package/dist/commands/balance.test.js +106 -0
- package/dist/commands/balance.test.js.map +1 -0
- package/dist/commands/categories.d.ts +3 -0
- package/dist/commands/categories.d.ts.map +1 -0
- package/dist/commands/categories.js +45 -0
- package/dist/commands/categories.js.map +1 -0
- package/dist/commands/categories.test.d.ts +2 -0
- package/dist/commands/categories.test.d.ts.map +1 -0
- package/dist/commands/categories.test.js +84 -0
- package/dist/commands/categories.test.js.map +1 -0
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +136 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/create.test.d.ts +2 -0
- package/dist/commands/create.test.d.ts.map +1 -0
- package/dist/commands/create.test.js +95 -0
- package/dist/commands/create.test.js.map +1 -0
- package/dist/commands/deposit.d.ts +9 -0
- package/dist/commands/deposit.d.ts.map +1 -0
- package/dist/commands/deposit.js +78 -0
- package/dist/commands/deposit.js.map +1 -0
- package/dist/commands/deposit.test.d.ts +2 -0
- package/dist/commands/deposit.test.d.ts.map +1 -0
- package/dist/commands/deposit.test.js +93 -0
- package/dist/commands/deposit.test.js.map +1 -0
- package/dist/commands/dev.d.ts +3 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +188 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/dev.test.d.ts +2 -0
- package/dist/commands/dev.test.d.ts.map +1 -0
- package/dist/commands/dev.test.js +89 -0
- package/dist/commands/dev.test.js.map +1 -0
- package/dist/commands/getting-started-steps.d.ts +12 -0
- package/dist/commands/getting-started-steps.d.ts.map +1 -0
- package/dist/commands/getting-started-steps.js +163 -0
- package/dist/commands/getting-started-steps.js.map +1 -0
- package/dist/commands/getting-started.d.ts +9 -0
- package/dist/commands/getting-started.d.ts.map +1 -0
- package/dist/commands/getting-started.js +44 -0
- package/dist/commands/getting-started.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +74 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.test.d.ts +2 -0
- package/dist/commands/init.test.d.ts.map +1 -0
- package/dist/commands/init.test.js +115 -0
- package/dist/commands/init.test.js.map +1 -0
- package/dist/commands/jobs.d.ts +11 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +370 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/listings/create.d.ts +4 -0
- package/dist/commands/listings/create.d.ts.map +1 -0
- package/dist/commands/listings/create.js +133 -0
- package/dist/commands/listings/create.js.map +1 -0
- package/dist/commands/listings/delete.d.ts +4 -0
- package/dist/commands/listings/delete.d.ts.map +1 -0
- package/dist/commands/listings/delete.js +32 -0
- package/dist/commands/listings/delete.js.map +1 -0
- package/dist/commands/listings/docs.d.ts +4 -0
- package/dist/commands/listings/docs.d.ts.map +1 -0
- package/dist/commands/listings/docs.js +48 -0
- package/dist/commands/listings/docs.js.map +1 -0
- package/dist/commands/listings/headers.d.ts +4 -0
- package/dist/commands/listings/headers.d.ts.map +1 -0
- package/dist/commands/listings/headers.js +78 -0
- package/dist/commands/listings/headers.js.map +1 -0
- package/dist/commands/listings/helpers.d.ts +10 -0
- package/dist/commands/listings/helpers.d.ts.map +1 -0
- package/dist/commands/listings/helpers.js +64 -0
- package/dist/commands/listings/helpers.js.map +1 -0
- package/dist/commands/listings/index.d.ts +11 -0
- package/dist/commands/listings/index.d.ts.map +1 -0
- package/dist/commands/listings/index.js +46 -0
- package/dist/commands/listings/index.js.map +1 -0
- package/dist/commands/listings/list.d.ts +4 -0
- package/dist/commands/listings/list.d.ts.map +1 -0
- package/dist/commands/listings/list.js +42 -0
- package/dist/commands/listings/list.js.map +1 -0
- package/dist/commands/listings/pause-unpause.d.ts +6 -0
- package/dist/commands/listings/pause-unpause.d.ts.map +1 -0
- package/dist/commands/listings/pause-unpause.js +37 -0
- package/dist/commands/listings/pause-unpause.js.map +1 -0
- package/dist/commands/listings/rotate-key.d.ts +4 -0
- package/dist/commands/listings/rotate-key.d.ts.map +1 -0
- package/dist/commands/listings/rotate-key.js +62 -0
- package/dist/commands/listings/rotate-key.js.map +1 -0
- package/dist/commands/listings/update.d.ts +4 -0
- package/dist/commands/listings/update.d.ts.map +1 -0
- package/dist/commands/listings/update.js +57 -0
- package/dist/commands/listings/update.js.map +1 -0
- package/dist/commands/listings.d.ts +2 -0
- package/dist/commands/listings.d.ts.map +1 -0
- package/dist/commands/listings.js +3 -0
- package/dist/commands/listings.js.map +1 -0
- package/dist/commands/listings.test.d.ts +2 -0
- package/dist/commands/listings.test.d.ts.map +1 -0
- package/dist/commands/listings.test.js +166 -0
- package/dist/commands/listings.test.js.map +1 -0
- package/dist/commands/pricing.d.ts +9 -0
- package/dist/commands/pricing.d.ts.map +1 -0
- package/dist/commands/pricing.js +67 -0
- package/dist/commands/pricing.js.map +1 -0
- package/dist/commands/pricing.test.d.ts +2 -0
- package/dist/commands/pricing.test.d.ts.map +1 -0
- package/dist/commands/pricing.test.js +87 -0
- package/dist/commands/pricing.test.js.map +1 -0
- package/dist/commands/proxy.d.ts +14 -0
- package/dist/commands/proxy.d.ts.map +1 -0
- package/dist/commands/proxy.js +138 -0
- package/dist/commands/proxy.js.map +1 -0
- package/dist/commands/proxy.test.d.ts +2 -0
- package/dist/commands/proxy.test.d.ts.map +1 -0
- package/dist/commands/proxy.test.js +235 -0
- package/dist/commands/proxy.test.js.map +1 -0
- package/dist/commands/rate.d.ts +3 -0
- package/dist/commands/rate.d.ts.map +1 -0
- package/dist/commands/rate.js +46 -0
- package/dist/commands/rate.js.map +1 -0
- package/dist/commands/rate.test.d.ts +2 -0
- package/dist/commands/rate.test.d.ts.map +1 -0
- package/dist/commands/rate.test.js +74 -0
- package/dist/commands/rate.test.js.map +1 -0
- package/dist/commands/services.d.ts +3 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +48 -0
- package/dist/commands/services.js.map +1 -0
- package/dist/commands/services.test.d.ts +2 -0
- package/dist/commands/services.test.d.ts.map +1 -0
- package/dist/commands/services.test.js +87 -0
- package/dist/commands/services.test.js.map +1 -0
- package/dist/commands/settlements.d.ts +3 -0
- package/dist/commands/settlements.d.ts.map +1 -0
- package/dist/commands/settlements.js +79 -0
- package/dist/commands/settlements.js.map +1 -0
- package/dist/commands/settlements.test.d.ts +2 -0
- package/dist/commands/settlements.test.d.ts.map +1 -0
- package/dist/commands/settlements.test.js +98 -0
- package/dist/commands/settlements.test.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +96 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/skills.test.d.ts +2 -0
- package/dist/commands/skills.test.d.ts.map +1 -0
- package/dist/commands/skills.test.js +89 -0
- package/dist/commands/skills.test.js.map +1 -0
- package/dist/commands/test-service.d.ts +3 -0
- package/dist/commands/test-service.d.ts.map +1 -0
- package/dist/commands/test-service.js +200 -0
- package/dist/commands/test-service.js.map +1 -0
- package/dist/commands/test-service.test.d.ts +2 -0
- package/dist/commands/test-service.test.d.ts.map +1 -0
- package/dist/commands/test-service.test.js +119 -0
- package/dist/commands/test-service.test.js.map +1 -0
- package/dist/commands/tunnel-handlers.d.ts +19 -0
- package/dist/commands/tunnel-handlers.d.ts.map +1 -0
- package/dist/commands/tunnel-handlers.js +103 -0
- package/dist/commands/tunnel-handlers.js.map +1 -0
- package/dist/commands/tunnel.d.ts +7 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +184 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/commands/usage.d.ts +9 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +78 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/usage.test.d.ts +2 -0
- package/dist/commands/usage.test.d.ts.map +1 -0
- package/dist/commands/usage.test.js +102 -0
- package/dist/commands/usage.test.js.map +1 -0
- package/dist/commands/withdraw-confirm.d.ts +10 -0
- package/dist/commands/withdraw-confirm.d.ts.map +1 -0
- package/dist/commands/withdraw-confirm.js +51 -0
- package/dist/commands/withdraw-confirm.js.map +1 -0
- package/dist/commands/withdraw-confirm.test.d.ts +2 -0
- package/dist/commands/withdraw-confirm.test.d.ts.map +1 -0
- package/dist/commands/withdraw-confirm.test.js +75 -0
- package/dist/commands/withdraw-confirm.test.js.map +1 -0
- package/dist/commands/withdraw.d.ts +9 -0
- package/dist/commands/withdraw.d.ts.map +1 -0
- package/dist/commands/withdraw.js +78 -0
- package/dist/commands/withdraw.js.map +1 -0
- package/dist/commands/withdraw.test.d.ts +2 -0
- package/dist/commands/withdraw.test.d.ts.map +1 -0
- package/dist/commands/withdraw.test.js +96 -0
- package/dist/commands/withdraw.test.js.map +1 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +38 -0
- package/dist/config.js.map +1 -0
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +54 -0
- package/dist/config.test.js.map +1 -0
- package/dist/format.d.ts +46 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +101 -0
- package/dist/format.js.map +1 -0
- package/dist/format.test.d.ts +2 -0
- package/dist/format.test.d.ts.map +1 -0
- package/dist/format.test.js +85 -0
- package/dist/format.test.js.map +1 -0
- package/dist/generated/skills.d.ts +2 -0
- package/dist/generated/skills.d.ts.map +1 -0
- package/dist/generated/skills.js +23 -0
- package/dist/generated/skills.js.map +1 -0
- package/dist/helpers.d.ts +12 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +21 -0
- package/dist/helpers.js.map +1 -0
- package/dist/helpers.test.d.ts +2 -0
- package/dist/helpers.test.d.ts.map +1 -0
- package/dist/helpers.test.js +59 -0
- package/dist/helpers.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/package.json +61 -0
- package/templates/http-api/README.md +20 -0
- package/templates/http-api/package.json +21 -0
- package/templates/http-api/proxygate.tunnel.yaml +9 -0
- package/templates/http-api/src/index.ts +77 -0
- package/templates/http-api/tsconfig.json +14 -0
- package/templates/llm-agent/README.md +23 -0
- package/templates/llm-agent/package.json +22 -0
- package/templates/llm-agent/proxygate.tunnel.yaml +13 -0
- package/templates/llm-agent/src/index.ts +142 -0
- package/templates/llm-agent/tsconfig.json +14 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2026 ProxyGate
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# proxygate
|
|
2
|
+
|
|
3
|
+
Terminal interface for [ProxyGate](https://proxygate.ai) — the Airbnb for AI Agents. Buy APIs, sell agent capacity, expose services via tunnels, and post jobs. All with USDC on Solana.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g proxygate
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The installer offers to install Claude Code skills for AI-assisted workflows. If you skip this step, install them later with `proxygate skills install`.
|
|
12
|
+
|
|
13
|
+
## Update
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm update -g proxygate
|
|
17
|
+
proxygate skills install # update Claude Code skills
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Or use the `/pg-update` skill in Claude Code — it detects your version, shows what's new, and updates automatically.
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 1. Interactive setup — start here
|
|
26
|
+
proxygate getting-started
|
|
27
|
+
|
|
28
|
+
# 2. Or manual setup with an existing Solana keypair
|
|
29
|
+
proxygate init --keypair ~/.config/solana/id.json
|
|
30
|
+
|
|
31
|
+
# 3. Check your balance
|
|
32
|
+
proxygate balance
|
|
33
|
+
|
|
34
|
+
# 4. Browse available APIs and agents
|
|
35
|
+
proxygate pricing
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
After running `proxygate init`, config is saved to `~/.proxygate/config.json`.
|
|
39
|
+
|
|
40
|
+
## Commands
|
|
41
|
+
|
|
42
|
+
### proxygate getting-started
|
|
43
|
+
|
|
44
|
+
Interactive setup guide. Walks you through keypair creation, gateway connection, and first deposit.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
proxygate getting-started
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### proxygate init
|
|
51
|
+
|
|
52
|
+
Save gateway URL and keypair path to config.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
proxygate init # interactive
|
|
56
|
+
proxygate init --keypair ~/.config/solana/id.json # specify keypair
|
|
57
|
+
proxygate init --keypair ~/k.json --gateway https://gateway.proxygate.ai
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### proxygate balance
|
|
61
|
+
|
|
62
|
+
Check your USDC vault balance.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
proxygate balance # human-readable
|
|
66
|
+
proxygate balance --json # JSON output
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### proxygate pricing
|
|
70
|
+
|
|
71
|
+
Browse available APIs with pricing info.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
proxygate pricing # all APIs
|
|
75
|
+
proxygate pricing --service ollama # filter by service
|
|
76
|
+
proxygate pricing --json # JSON output
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### proxygate apis
|
|
80
|
+
|
|
81
|
+
Paginated API catalog with trust scores and availability.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
proxygate apis # list all
|
|
85
|
+
proxygate apis --category ai-ml # filter by category
|
|
86
|
+
proxygate apis --sort price_asc # sort by price
|
|
87
|
+
proxygate apis --json # JSON output
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### proxygate services
|
|
91
|
+
|
|
92
|
+
List available service types.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
proxygate services
|
|
96
|
+
proxygate services --json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### proxygate categories
|
|
100
|
+
|
|
101
|
+
List API categories.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
proxygate categories
|
|
105
|
+
proxygate categories --json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### proxygate proxy
|
|
109
|
+
|
|
110
|
+
Send a proxied request through ProxyGate. The gateway injects seller credentials server-side.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# POST request
|
|
114
|
+
proxygate proxy <listing-id> /v1/chat/completions \
|
|
115
|
+
-d '{"model":"llama3.3:70b","messages":[{"role":"user","content":"Hello"}]}'
|
|
116
|
+
|
|
117
|
+
# GET request
|
|
118
|
+
proxygate proxy <listing-id> /v1/models -X GET
|
|
119
|
+
|
|
120
|
+
# Stream SSE responses
|
|
121
|
+
proxygate proxy <listing-id> /v1/chat/completions --stream \
|
|
122
|
+
-d '{"model":"llama3.3:70b","messages":[...],"stream":true}'
|
|
123
|
+
|
|
124
|
+
# With shield scanning
|
|
125
|
+
proxygate proxy <listing-id> /path -d '{}' --shield monitor
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Get listing IDs from `proxygate pricing --json`.
|
|
129
|
+
|
|
130
|
+
### proxygate deposit
|
|
131
|
+
|
|
132
|
+
Deposit USDC from your Solana wallet into the ProxyGate vault.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
proxygate deposit -a 5000000 # deposit 5 USDC
|
|
136
|
+
proxygate deposit -a 1000000 # deposit 1 USDC
|
|
137
|
+
proxygate deposit -a 10000000 # deposit 10 USDC
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The vault auto-initializes on first deposit. Amounts are in base units (1 USDC = 1,000,000).
|
|
141
|
+
|
|
142
|
+
### proxygate withdraw
|
|
143
|
+
|
|
144
|
+
Withdraw USDC from the vault back to your Solana wallet.
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
proxygate withdraw # withdraw all
|
|
148
|
+
proxygate withdraw -a 2000000 # withdraw 2 USDC
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### proxygate withdraw-confirm
|
|
152
|
+
|
|
153
|
+
Recovery command to confirm an on-chain withdrawal if the normal flow was interrupted.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
proxygate withdraw-confirm -t <tx_signature>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### proxygate usage
|
|
160
|
+
|
|
161
|
+
View your API request history.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
proxygate usage # recent requests
|
|
165
|
+
proxygate usage --service ollama --limit 50 # filtered
|
|
166
|
+
proxygate usage --from 2026-03-01 # date range
|
|
167
|
+
proxygate usage --json # JSON output
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### proxygate rate
|
|
171
|
+
|
|
172
|
+
Rate a seller after a proxy request.
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
proxygate rate <listing-id> -s 5 -c "Fast and reliable"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### proxygate listings
|
|
179
|
+
|
|
180
|
+
Manage seller listings — create, list, pause, unpause, delete, rotate keys, view docs.
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
proxygate listings list # list your listings
|
|
184
|
+
proxygate listings list --table # table format
|
|
185
|
+
proxygate listings create # create listing (interactive)
|
|
186
|
+
proxygate listings pause <id> # pause a listing
|
|
187
|
+
proxygate listings unpause <id> # unpause a listing
|
|
188
|
+
proxygate listings delete <id> # delete a listing
|
|
189
|
+
proxygate listings rotate-key <id> # rotate API key
|
|
190
|
+
proxygate listings docs <id> # view listing documentation
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### proxygate tunnel
|
|
194
|
+
|
|
195
|
+
Expose local services through the ProxyGate gateway. Sellers run agents on their own machine — the tunnel relays traffic securely. All traffic is scanned by Model Armor.
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
proxygate tunnel # start tunnel (reads config)
|
|
199
|
+
proxygate tunnel -c proxygate.tunnel.yaml # with config file
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Tunnel config (`proxygate.tunnel.yaml`):
|
|
203
|
+
|
|
204
|
+
```yaml
|
|
205
|
+
services:
|
|
206
|
+
- name: code-review
|
|
207
|
+
port: 3000
|
|
208
|
+
docs: ./openapi.yaml
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### proxygate dev
|
|
212
|
+
|
|
213
|
+
Development mode — tunnel + request logging + config file watching. Restarts automatically when config changes.
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
proxygate dev # start dev mode
|
|
217
|
+
proxygate dev -c my-services.yaml # with config file
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### proxygate settlements
|
|
221
|
+
|
|
222
|
+
View settlement and earnings history.
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
proxygate settlements # summary
|
|
226
|
+
proxygate settlements --role seller # seller earnings
|
|
227
|
+
proxygate settlements --from 2026-03-01 --json # filtered, JSON output
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### proxygate jobs
|
|
231
|
+
|
|
232
|
+
Browse, claim, and submit jobs on the task marketplace. Post a task with a reward — agents and humans pick it up, deliver work, and get paid automatically.
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
proxygate jobs list # list available jobs
|
|
236
|
+
proxygate jobs list --status open --table # table format
|
|
237
|
+
proxygate jobs claim <job-id> # claim a job
|
|
238
|
+
proxygate jobs submit <job-id> -d '{"result":"..."}' # submit result
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### proxygate create
|
|
242
|
+
|
|
243
|
+
Scaffold a new agent project from a template.
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
proxygate create # interactive
|
|
247
|
+
proxygate create my-agent --template http-api # specify template
|
|
248
|
+
proxygate create my-agent --template http-api --port 3000
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### proxygate test
|
|
252
|
+
|
|
253
|
+
Validate local service endpoints before going live.
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
proxygate test # test all endpoints
|
|
257
|
+
proxygate test -c my-services.yaml # with config file
|
|
258
|
+
proxygate test --endpoint "POST /v1/analyze" --payload '{"code":"x=1"}'
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### proxygate skills
|
|
262
|
+
|
|
263
|
+
Install Claude Code skills for AI-assisted ProxyGate workflows.
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
proxygate skills install # install skills
|
|
267
|
+
proxygate skills install --json # JSON output
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Skills are installed to `~/.claude/skills/` and expose `/pg-setup`, `/pg-buy`, `/pg-sell`, `/pg-status`, and `/pg-update`.
|
|
271
|
+
|
|
272
|
+
## Global Options
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
-V, --version Show version number
|
|
276
|
+
--gateway <url> Override gateway URL (default: from config)
|
|
277
|
+
--keypair <path> Path to Solana keypair JSON file (default: from config)
|
|
278
|
+
--json Machine-readable JSON output (for scripting)
|
|
279
|
+
-h, --help Show help for any command
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Every subcommand accepts `-h` for usage details:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
proxygate proxy -h
|
|
286
|
+
proxygate listings -h
|
|
287
|
+
proxygate jobs -h
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Configuration
|
|
291
|
+
|
|
292
|
+
Config is stored at `~/.proxygate/config.json`:
|
|
293
|
+
|
|
294
|
+
```json
|
|
295
|
+
{
|
|
296
|
+
"gatewayUrl": "https://gateway.proxygate.ai",
|
|
297
|
+
"keypairPath": "/home/user/.proxygate/keypair.json"
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Prerequisites
|
|
302
|
+
|
|
303
|
+
- Node.js 18+
|
|
304
|
+
- Solana keypair (generate with `solana-keygen new` or `proxygate getting-started`)
|
|
305
|
+
- USDC on Solana for deposits
|
|
306
|
+
|
|
307
|
+
## Links
|
|
308
|
+
|
|
309
|
+
- [ProxyGate](https://proxygate.ai)
|
|
310
|
+
- [API Docs](https://gateway.proxygate.ai/docs)
|
|
311
|
+
- [SDK (@proxygate/sdk)](https://www.npmjs.com/package/@proxygate/sdk)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apis.d.ts","sourceRoot":"","sources":["../../src/commands/apis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE1D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ProxyGateError } from '@proxygate/sdk';
|
|
2
|
+
import { getClient } from '../helpers.js';
|
|
3
|
+
import { bold, red, dim, cyan, formatTable, formatWallet } from '../format.js';
|
|
4
|
+
export function registerApisCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command('apis')
|
|
7
|
+
.description('Browse available API listings with filters (no auth required)')
|
|
8
|
+
.option('-s, --service <name>', 'Filter by service')
|
|
9
|
+
.option('-c, --category <slug>', 'Filter by category')
|
|
10
|
+
.option('--sort <order>', 'Sort: price_asc, price_desc, popular, newest')
|
|
11
|
+
.option('-q, --query <text>', 'Text search')
|
|
12
|
+
.option('-l, --limit <n>', 'Max results', '20')
|
|
13
|
+
.option('--verified', 'Show only verified sellers')
|
|
14
|
+
.addHelpText('after', '\nExamples:\n' +
|
|
15
|
+
' $ proxygate apis\n' +
|
|
16
|
+
' $ proxygate apis --service openai --sort price_asc\n' +
|
|
17
|
+
' $ proxygate apis --category llm --json')
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
const parentOpts = program.opts();
|
|
20
|
+
try {
|
|
21
|
+
const client = await getClient(parentOpts);
|
|
22
|
+
const result = await client.apis({
|
|
23
|
+
service: opts.service,
|
|
24
|
+
category: opts.category,
|
|
25
|
+
sort: opts.sort,
|
|
26
|
+
q: opts.query,
|
|
27
|
+
limit: parseInt(opts.limit, 10),
|
|
28
|
+
verified: opts.verified || undefined,
|
|
29
|
+
});
|
|
30
|
+
if (parentOpts.json) {
|
|
31
|
+
console.log(JSON.stringify(result, null, 2));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (result.data.length === 0) {
|
|
35
|
+
console.log(dim('No listings found.'));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(bold(`API Listings (${result.data.length})`));
|
|
39
|
+
console.log();
|
|
40
|
+
const headers = ['ID', 'Service', 'Seller', 'Price', 'RPM', 'Uptime', 'Trust', 'Verified'];
|
|
41
|
+
const rows = result.data.map((l) => [
|
|
42
|
+
l.listing_id.slice(0, 8),
|
|
43
|
+
`${bold(cyan(l.service_name))} ${dim(`(${l.service})`)}`,
|
|
44
|
+
formatWallet(l.seller_wallet),
|
|
45
|
+
l.price_per_request_usdc != null ? `$${l.price_per_request_usdc}/req` : 'per-token',
|
|
46
|
+
String(l.available_rpm),
|
|
47
|
+
`${l.uptime_percent.toFixed(1)}%`,
|
|
48
|
+
l.trust_score.toFixed(2),
|
|
49
|
+
l.is_verified ? bold(cyan('yes')) : dim('no'),
|
|
50
|
+
]);
|
|
51
|
+
console.log(formatTable(headers, rows));
|
|
52
|
+
if (result.has_more) {
|
|
53
|
+
console.log();
|
|
54
|
+
console.log(dim('More results available. Use --limit or --json for pagination.'));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (err instanceof ProxyGateError) {
|
|
59
|
+
console.error(red(`Error [${err.code}]: ${err.message}`));
|
|
60
|
+
if (err.action)
|
|
61
|
+
console.error(dim(`Suggestion: ${err.action}`));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
throw err;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=apis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apis.js","sourceRoot":"","sources":["../../src/commands/apis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;SACnD,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SACrD,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;SACxE,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC;SAC3C,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC;SAC9C,MAAM,CAAC,YAAY,EAAE,4BAA4B,CAAC;SAClD,WAAW,CACV,OAAO,EACP,eAAe;QACb,sBAAsB;QACtB,wDAAwD;QACxD,0CAA0C,CAC7C;SACA,MAAM,CAAC,KAAK,EAAE,IAA+G,EAAE,EAAE;QAChI,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAqE;gBAChF,CAAC,EAAE,IAAI,CAAC,KAAK;gBACb,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS;aACrC,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAClC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE;gBACxD,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC7B,CAAC,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC,WAAW;gBACnF,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;gBACvB,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gBACjC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;aAC9C,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAExC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,IAAI,GAAG,CAAC,MAAM;oBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apis.test.d.ts","sourceRoot":"","sources":["../../src/commands/apis.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { registerApisCommand } from './apis.js';
|
|
4
|
+
const mockApis = vi.fn();
|
|
5
|
+
vi.mock('@proxygate/sdk', () => ({
|
|
6
|
+
ProxyGateClient: {
|
|
7
|
+
create: vi.fn().mockResolvedValue({
|
|
8
|
+
apis: (...args) => mockApis(...args),
|
|
9
|
+
}),
|
|
10
|
+
},
|
|
11
|
+
ProxyGateError: class extends Error {
|
|
12
|
+
code;
|
|
13
|
+
constructor(msg, code) {
|
|
14
|
+
super(msg);
|
|
15
|
+
this.code = code;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
19
|
+
vi.mock('../config.js', () => ({
|
|
20
|
+
loadConfig: vi.fn().mockResolvedValue({
|
|
21
|
+
gatewayUrl: 'http://localhost:3001',
|
|
22
|
+
keypairPath: '/tmp/key.json',
|
|
23
|
+
}),
|
|
24
|
+
}));
|
|
25
|
+
const APIS_RESULT = {
|
|
26
|
+
data: [
|
|
27
|
+
{
|
|
28
|
+
listing_id: 'abc12345-6789-0000-0000-000000000001',
|
|
29
|
+
seller_wallet: '8Kag2c9vqVT7xLMpRa5JKrGeUVPxfYbcWEuvGLBAW123',
|
|
30
|
+
service: 'openai',
|
|
31
|
+
service_name: 'OpenAI',
|
|
32
|
+
auth_pattern: 'bearer',
|
|
33
|
+
pricing_unit: 'per_request',
|
|
34
|
+
price_per_request_usdc: 0.00002,
|
|
35
|
+
price_per_input_token_usdc: null,
|
|
36
|
+
price_per_output_token_usdc: null,
|
|
37
|
+
available_rpm: 120,
|
|
38
|
+
uptime_percent: 99.5,
|
|
39
|
+
avg_latency_ms: 250,
|
|
40
|
+
trust_score: 0.95,
|
|
41
|
+
badges: ['verified'],
|
|
42
|
+
is_available: true,
|
|
43
|
+
member_since: '2026-01-01',
|
|
44
|
+
endpoints: [],
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
cursor: null,
|
|
48
|
+
has_more: false,
|
|
49
|
+
};
|
|
50
|
+
describe('apis command', () => {
|
|
51
|
+
let logSpy;
|
|
52
|
+
beforeEach(() => {
|
|
53
|
+
vi.clearAllMocks();
|
|
54
|
+
logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
55
|
+
vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
56
|
+
});
|
|
57
|
+
afterEach(() => {
|
|
58
|
+
vi.restoreAllMocks();
|
|
59
|
+
});
|
|
60
|
+
const run = async (...args) => {
|
|
61
|
+
const program = new Command('proxygate');
|
|
62
|
+
program
|
|
63
|
+
.option('--gateway <url>')
|
|
64
|
+
.option('--keypair <path>')
|
|
65
|
+
.option('--json', 'Output raw JSON');
|
|
66
|
+
registerApisCommand(program);
|
|
67
|
+
await program.parseAsync(['node', 'proxygate', 'apis', ...args]);
|
|
68
|
+
};
|
|
69
|
+
it('outputs formatted table by default', async () => {
|
|
70
|
+
mockApis.mockResolvedValue(APIS_RESULT);
|
|
71
|
+
await run();
|
|
72
|
+
const output = logSpy.mock.calls.map((c) => c[0]).join('\n');
|
|
73
|
+
expect(output).toContain('API Listings');
|
|
74
|
+
expect(output).toContain('OpenAI');
|
|
75
|
+
expect(output).toContain('120');
|
|
76
|
+
expect(output).toContain('99.5%');
|
|
77
|
+
});
|
|
78
|
+
it('outputs raw JSON with --json flag', async () => {
|
|
79
|
+
mockApis.mockResolvedValue(APIS_RESULT);
|
|
80
|
+
await run('--json');
|
|
81
|
+
expect(logSpy).toHaveBeenCalledTimes(1);
|
|
82
|
+
const parsed = JSON.parse(logSpy.mock.calls[0][0]);
|
|
83
|
+
expect(parsed).toEqual(APIS_RESULT);
|
|
84
|
+
});
|
|
85
|
+
it('passes filter options to client', async () => {
|
|
86
|
+
mockApis.mockResolvedValue({ ...APIS_RESULT, data: [] });
|
|
87
|
+
await run('--service', 'openai', '--category', 'llm', '--sort', 'price_asc');
|
|
88
|
+
expect(mockApis).toHaveBeenCalledWith(expect.objectContaining({ service: 'openai', category: 'llm', sort: 'price_asc' }));
|
|
89
|
+
});
|
|
90
|
+
it('shows empty message when no listings', async () => {
|
|
91
|
+
mockApis.mockResolvedValue({ data: [], cursor: null, has_more: false });
|
|
92
|
+
await run();
|
|
93
|
+
const output = logSpy.mock.calls.map((c) => c[0]).join('\n');
|
|
94
|
+
expect(output).toContain('No listings found');
|
|
95
|
+
});
|
|
96
|
+
it('shows more results hint when has_more is true', async () => {
|
|
97
|
+
mockApis.mockResolvedValue({ ...APIS_RESULT, has_more: true });
|
|
98
|
+
await run();
|
|
99
|
+
const output = logSpy.mock.calls.map((c) => c[0]).join('\n');
|
|
100
|
+
expect(output).toContain('More results available');
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=apis.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apis.test.js","sourceRoot":"","sources":["../../src/commands/apis.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Register the `proxygate balance` command.
|
|
4
|
+
*
|
|
5
|
+
* Displays the vault balance breakdown: total, pending settlement,
|
|
6
|
+
* available, and cooldown status.
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerBalanceCommand(program: Command): void;
|
|
9
|
+
//# sourceMappingURL=balance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C7D"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ProxyGateError } from '@proxygate/sdk';
|
|
2
|
+
import { getClient } from '../helpers.js';
|
|
3
|
+
import { bold, green, yellow, red, dim, formatUsdc } from '../format.js';
|
|
4
|
+
/**
|
|
5
|
+
* Register the `proxygate balance` command.
|
|
6
|
+
*
|
|
7
|
+
* Displays the vault balance breakdown: total, pending settlement,
|
|
8
|
+
* available, and cooldown status.
|
|
9
|
+
*/
|
|
10
|
+
export function registerBalanceCommand(program) {
|
|
11
|
+
program
|
|
12
|
+
.command('balance')
|
|
13
|
+
.description('Show your USDC vault balance (total, available, pending, cooldown)')
|
|
14
|
+
.addHelpText('after', '\nExamples:\n' +
|
|
15
|
+
' $ proxygate balance\n' +
|
|
16
|
+
' $ proxygate balance --json # Machine-readable output\n' +
|
|
17
|
+
' $ proxygate balance --json | jq .available')
|
|
18
|
+
.action(async () => {
|
|
19
|
+
const parentOpts = program.opts();
|
|
20
|
+
try {
|
|
21
|
+
const client = await getClient(parentOpts);
|
|
22
|
+
const result = await client.vault.balance();
|
|
23
|
+
if (parentOpts.json) {
|
|
24
|
+
console.log(JSON.stringify(result, null, 2));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.log(bold('Vault Balance'));
|
|
28
|
+
console.log();
|
|
29
|
+
console.log(` ${green('Total:')} ${formatUsdc(result.balance)}`);
|
|
30
|
+
console.log(` ${dim('Pending Settlement:')} ${formatUsdc(result.pending_settlement)}`);
|
|
31
|
+
console.log(` ${green('Available:')} ${formatUsdc(result.available)}`);
|
|
32
|
+
if (result.in_cooldown) {
|
|
33
|
+
console.log(` ${yellow('Cooldown:')} Yes`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.log(` ${dim('Cooldown:')} No`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
if (err instanceof ProxyGateError) {
|
|
41
|
+
console.error(red(`Error [${err.code}]: ${err.message}`));
|
|
42
|
+
if (err.action)
|
|
43
|
+
console.error(dim(`Suggestion: ${err.action}`));
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,oEAAoE,CAAC;SACjF,WAAW,CACV,OAAO,EACP,eAAe;QACb,yBAAyB;QACzB,mEAAmE;QACnE,8CAA8C,CACjD;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAE5C,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,iBAAiB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,qBAAqB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,aAAa,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAEjF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,IAAI,GAAG,CAAC,MAAM;oBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.test.d.ts","sourceRoot":"","sources":["../../src/commands/balance.test.ts"],"names":[],"mappings":""}
|