@antseed/cli 0.1.80 → 0.1.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -77
- package/dist/cli/commands/buyer/balance.d.ts +3 -0
- package/dist/cli/commands/buyer/balance.d.ts.map +1 -0
- package/dist/cli/commands/{balance.js → buyer/balance.js} +5 -6
- package/dist/cli/commands/buyer/balance.js.map +1 -0
- package/dist/cli/commands/buyer/channels.d.ts +3 -0
- package/dist/cli/commands/buyer/channels.d.ts.map +1 -0
- package/dist/cli/commands/{channels.js → buyer/channels.js} +9 -17
- package/dist/cli/commands/buyer/channels.js.map +1 -0
- package/dist/cli/commands/buyer/connection.d.ts +3 -0
- package/dist/cli/commands/buyer/connection.d.ts.map +1 -0
- package/dist/cli/commands/{connection.js → buyer/connection.js} +5 -5
- package/dist/cli/commands/buyer/connection.js.map +1 -0
- package/dist/cli/commands/buyer/deposit.d.ts +3 -0
- package/dist/cli/commands/buyer/deposit.d.ts.map +1 -0
- package/dist/cli/commands/{deposit.js → buyer/deposit.js} +6 -6
- package/dist/cli/commands/buyer/deposit.js.map +1 -0
- package/dist/cli/commands/buyer/index.d.ts +3 -0
- package/dist/cli/commands/buyer/index.d.ts.map +1 -0
- package/dist/cli/commands/buyer/index.js +24 -0
- package/dist/cli/commands/buyer/index.js.map +1 -0
- package/dist/cli/commands/buyer/metering.d.ts +3 -0
- package/dist/cli/commands/buyer/metering.d.ts.map +1 -0
- package/dist/cli/commands/{metering.js → buyer/metering.js} +7 -10
- package/dist/cli/commands/buyer/metering.js.map +1 -0
- package/dist/cli/commands/buyer/metering.test.d.ts.map +1 -0
- package/dist/cli/commands/buyer/metering.test.js.map +1 -0
- package/dist/cli/commands/{connect.d.ts → buyer/start.d.ts} +7 -4
- package/dist/cli/commands/buyer/start.d.ts.map +1 -0
- package/dist/cli/commands/{connect.js → buyer/start.js} +37 -71
- package/dist/cli/commands/buyer/start.js.map +1 -0
- package/dist/cli/commands/buyer/start.test.d.ts +2 -0
- package/dist/cli/commands/buyer/start.test.d.ts.map +1 -0
- package/dist/cli/commands/{connect.test.js → buyer/start.test.js} +12 -8
- package/dist/cli/commands/buyer/start.test.js.map +1 -0
- package/dist/cli/commands/buyer/status.d.ts +3 -0
- package/dist/cli/commands/buyer/status.d.ts.map +1 -0
- package/dist/cli/commands/buyer/status.js +70 -0
- package/dist/cli/commands/buyer/status.js.map +1 -0
- package/dist/cli/commands/buyer/subscribe.d.ts +3 -0
- package/dist/cli/commands/buyer/subscribe.d.ts.map +1 -0
- package/dist/cli/commands/{subscribe.js → buyer/subscribe.js} +8 -8
- package/dist/cli/commands/buyer/subscribe.js.map +1 -0
- package/dist/cli/commands/buyer/withdraw.d.ts +3 -0
- package/dist/cli/commands/buyer/withdraw.d.ts.map +1 -0
- package/dist/cli/commands/{withdraw.js → buyer/withdraw.js} +6 -7
- package/dist/cli/commands/buyer/withdraw.js.map +1 -0
- package/dist/cli/commands/{config.d.ts → config/index.d.ts} +7 -7
- package/dist/cli/commands/config/index.d.ts.map +1 -0
- package/dist/cli/commands/config/index.js +357 -0
- package/dist/cli/commands/config/index.js.map +1 -0
- package/dist/cli/commands/config/index.test.d.ts +2 -0
- package/dist/cli/commands/config/index.test.d.ts.map +1 -0
- package/dist/cli/commands/config/index.test.js +28 -0
- package/dist/cli/commands/config/index.test.js.map +1 -0
- package/dist/cli/commands/identity/index.d.ts +3 -0
- package/dist/cli/commands/identity/index.d.ts.map +1 -0
- package/dist/cli/commands/identity/index.js +6 -0
- package/dist/cli/commands/identity/index.js.map +1 -0
- package/dist/cli/commands/identity/profile.d.ts.map +1 -0
- package/dist/cli/commands/identity/profile.js.map +1 -0
- package/dist/cli/commands/network/bootstrap.d.ts +3 -0
- package/dist/cli/commands/network/bootstrap.d.ts.map +1 -0
- package/dist/cli/commands/{bootstrap.js → network/bootstrap.js} +5 -5
- package/dist/cli/commands/network/bootstrap.js.map +1 -0
- package/dist/cli/commands/network/browse.d.ts +7 -0
- package/dist/cli/commands/network/browse.d.ts.map +1 -0
- package/dist/cli/commands/{browse.js → network/browse.js} +6 -6
- package/dist/cli/commands/network/browse.js.map +1 -0
- package/dist/cli/commands/network/index.d.ts +3 -0
- package/dist/cli/commands/network/index.d.ts.map +1 -0
- package/dist/cli/commands/network/index.js +10 -0
- package/dist/cli/commands/network/index.js.map +1 -0
- package/dist/cli/commands/seller/emissions.d.ts +3 -0
- package/dist/cli/commands/seller/emissions.d.ts.map +1 -0
- package/dist/cli/commands/{emissions.js → seller/emissions.js} +7 -7
- package/dist/cli/commands/seller/emissions.js.map +1 -0
- package/dist/cli/commands/seller/index.d.ts +3 -0
- package/dist/cli/commands/seller/index.d.ts.map +1 -0
- package/dist/cli/commands/seller/index.js +18 -0
- package/dist/cli/commands/seller/index.js.map +1 -0
- package/dist/cli/commands/seller/register.d.ts +3 -0
- package/dist/cli/commands/seller/register.d.ts.map +1 -0
- package/dist/cli/commands/{register.js → seller/register.js} +6 -6
- package/dist/cli/commands/seller/register.js.map +1 -0
- package/dist/cli/commands/seller/setup.d.ts +12 -0
- package/dist/cli/commands/seller/setup.d.ts.map +1 -0
- package/dist/cli/commands/seller/setup.js +175 -0
- package/dist/cli/commands/seller/setup.js.map +1 -0
- package/dist/cli/commands/seller/setup.test.d.ts +2 -0
- package/dist/cli/commands/seller/setup.test.d.ts.map +1 -0
- package/dist/cli/commands/seller/setup.test.js +32 -0
- package/dist/cli/commands/seller/setup.test.js.map +1 -0
- package/dist/cli/commands/seller/stake.d.ts +3 -0
- package/dist/cli/commands/seller/stake.d.ts.map +1 -0
- package/dist/cli/commands/{stake.js → seller/stake.js} +11 -11
- package/dist/cli/commands/seller/stake.js.map +1 -0
- package/dist/cli/commands/seller/start.d.ts +44 -0
- package/dist/cli/commands/seller/start.d.ts.map +1 -0
- package/dist/cli/commands/{seed.js → seller/start.js} +241 -135
- package/dist/cli/commands/seller/start.js.map +1 -0
- package/dist/cli/commands/seller/start.test.d.ts +2 -0
- package/dist/cli/commands/seller/start.test.d.ts.map +1 -0
- package/dist/cli/commands/seller/start.test.js +212 -0
- package/dist/cli/commands/seller/start.test.js.map +1 -0
- package/dist/cli/commands/seller/status.d.ts +3 -0
- package/dist/cli/commands/seller/status.d.ts.map +1 -0
- package/dist/cli/commands/seller/status.js +72 -0
- package/dist/cli/commands/seller/status.js.map +1 -0
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/types.js +3 -1
- package/dist/cli/commands/types.js.map +1 -1
- package/dist/cli/commands/types.test.d.ts +2 -0
- package/dist/cli/commands/types.test.d.ts.map +1 -0
- package/dist/cli/commands/types.test.js +21 -0
- package/dist/cli/commands/types.test.js.map +1 -0
- package/dist/cli/index.js +11 -42
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/payment-utils.js +1 -1
- package/dist/cli/payment-utils.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -8
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/effective.d.ts.map +1 -1
- package/dist/config/effective.js +23 -4
- package/dist/config/effective.js.map +1 -1
- package/dist/config/effective.test.js +24 -5
- package/dist/config/effective.test.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +64 -95
- package/dist/config/loader.js.map +1 -1
- package/dist/config/loader.test.js +62 -41
- package/dist/config/loader.test.js.map +1 -1
- package/dist/config/types.d.ts +35 -49
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +51 -35
- package/dist/config/validation.js.map +1 -1
- package/dist/plugins/loader.js +1 -1
- package/dist/plugins/loader.js.map +1 -1
- package/dist/plugins/registry.d.ts +1 -0
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +4 -0
- package/dist/plugins/registry.js.map +1 -1
- package/dist/proxy/buyer-proxy.d.ts +1 -1
- package/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +5 -2
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/package.json +8 -8
- package/dist/cli/commands/balance.d.ts +0 -3
- package/dist/cli/commands/balance.d.ts.map +0 -1
- package/dist/cli/commands/balance.js.map +0 -1
- package/dist/cli/commands/bootstrap.d.ts +0 -3
- package/dist/cli/commands/bootstrap.d.ts.map +0 -1
- package/dist/cli/commands/bootstrap.js.map +0 -1
- package/dist/cli/commands/browse.d.ts +0 -7
- package/dist/cli/commands/browse.d.ts.map +0 -1
- package/dist/cli/commands/browse.js.map +0 -1
- package/dist/cli/commands/channels.d.ts +0 -3
- package/dist/cli/commands/channels.d.ts.map +0 -1
- package/dist/cli/commands/channels.js.map +0 -1
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js +0 -239
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/connect.d.ts.map +0 -1
- package/dist/cli/commands/connect.js.map +0 -1
- package/dist/cli/commands/connect.test.d.ts +0 -2
- package/dist/cli/commands/connect.test.d.ts.map +0 -1
- package/dist/cli/commands/connect.test.js.map +0 -1
- package/dist/cli/commands/connection.d.ts +0 -3
- package/dist/cli/commands/connection.d.ts.map +0 -1
- package/dist/cli/commands/connection.js.map +0 -1
- package/dist/cli/commands/deposit.d.ts +0 -3
- package/dist/cli/commands/deposit.d.ts.map +0 -1
- package/dist/cli/commands/deposit.js.map +0 -1
- package/dist/cli/commands/emissions.d.ts +0 -3
- package/dist/cli/commands/emissions.d.ts.map +0 -1
- package/dist/cli/commands/emissions.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -3
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -90
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/metering.d.ts +0 -3
- package/dist/cli/commands/metering.d.ts.map +0 -1
- package/dist/cli/commands/metering.js.map +0 -1
- package/dist/cli/commands/metering.test.d.ts.map +0 -1
- package/dist/cli/commands/metering.test.js.map +0 -1
- package/dist/cli/commands/plugin-create.d.ts +0 -11
- package/dist/cli/commands/plugin-create.d.ts.map +0 -1
- package/dist/cli/commands/plugin-create.js +0 -201
- package/dist/cli/commands/plugin-create.js.map +0 -1
- package/dist/cli/commands/plugin-create.test.d.ts +0 -2
- package/dist/cli/commands/plugin-create.test.d.ts.map +0 -1
- package/dist/cli/commands/plugin-create.test.js +0 -53
- package/dist/cli/commands/plugin-create.test.js.map +0 -1
- package/dist/cli/commands/plugin.d.ts +0 -3
- package/dist/cli/commands/plugin.d.ts.map +0 -1
- package/dist/cli/commands/plugin.js +0 -279
- package/dist/cli/commands/plugin.js.map +0 -1
- package/dist/cli/commands/plugin.test.d.ts +0 -2
- package/dist/cli/commands/plugin.test.d.ts.map +0 -1
- package/dist/cli/commands/plugin.test.js +0 -54
- package/dist/cli/commands/plugin.test.js.map +0 -1
- package/dist/cli/commands/profile.d.ts.map +0 -1
- package/dist/cli/commands/profile.js.map +0 -1
- package/dist/cli/commands/register.d.ts +0 -3
- package/dist/cli/commands/register.d.ts.map +0 -1
- package/dist/cli/commands/register.js.map +0 -1
- package/dist/cli/commands/seed.d.ts +0 -14
- package/dist/cli/commands/seed.d.ts.map +0 -1
- package/dist/cli/commands/seed.js.map +0 -1
- package/dist/cli/commands/seed.test.d.ts +0 -2
- package/dist/cli/commands/seed.test.d.ts.map +0 -1
- package/dist/cli/commands/seed.test.js +0 -92
- package/dist/cli/commands/seed.test.js.map +0 -1
- package/dist/cli/commands/setup.d.ts +0 -3
- package/dist/cli/commands/setup.d.ts.map +0 -1
- package/dist/cli/commands/setup.js +0 -84
- package/dist/cli/commands/setup.js.map +0 -1
- package/dist/cli/commands/stake.d.ts +0 -3
- package/dist/cli/commands/stake.d.ts.map +0 -1
- package/dist/cli/commands/stake.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -8
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -55
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/subscribe.d.ts +0 -3
- package/dist/cli/commands/subscribe.d.ts.map +0 -1
- package/dist/cli/commands/subscribe.js.map +0 -1
- package/dist/cli/commands/withdraw.d.ts +0 -3
- package/dist/cli/commands/withdraw.d.ts.map +0 -1
- package/dist/cli/commands/withdraw.js.map +0 -1
- /package/dist/cli/commands/{metering.test.d.ts → buyer/metering.test.d.ts} +0 -0
- /package/dist/cli/commands/{metering.test.js → buyer/metering.test.js} +0 -0
- /package/dist/cli/commands/{profile.d.ts → identity/profile.d.ts} +0 -0
- /package/dist/cli/commands/{profile.js → identity/profile.js} +0 -0
package/README.md
CHANGED
|
@@ -9,56 +9,76 @@ Command-line interface and web dashboard for the AntSeed Network — a P2P netwo
|
|
|
9
9
|
| Command | Description |
|
|
10
10
|
|---------|-------------|
|
|
11
11
|
| **Setup** | |
|
|
12
|
-
| `antseed
|
|
13
|
-
| `antseed setup --role <role>` | Check readiness for provider or buyer role |
|
|
14
|
-
| `antseed register` | Register peer identity on-chain (ERC-8004) |
|
|
12
|
+
| `antseed seller setup` | Interactive seller onboarding |
|
|
15
13
|
| **Providing** | |
|
|
16
|
-
| `antseed
|
|
17
|
-
| `antseed
|
|
18
|
-
| `antseed
|
|
19
|
-
| `antseed
|
|
14
|
+
| `antseed seller start` | Start providing AI services on the P2P network |
|
|
15
|
+
| `antseed seller register` | Register peer identity on-chain (ERC-8004) |
|
|
16
|
+
| `antseed seller stake <amount>` | Stake USDC as a provider (min $10) |
|
|
17
|
+
| `antseed seller unstake` | Withdraw staked USDC |
|
|
18
|
+
| `antseed seller emissions claim` | Claim accumulated seller payouts |
|
|
20
19
|
| **Buying** | |
|
|
21
|
-
| `antseed
|
|
22
|
-
| `antseed
|
|
23
|
-
| `antseed
|
|
24
|
-
| `antseed
|
|
25
|
-
| `antseed
|
|
20
|
+
| `antseed buyer start` | Start the buyer proxy and connect to sellers |
|
|
21
|
+
| `antseed buyer start --router <name>` | Start the buyer proxy with a non-default router |
|
|
22
|
+
| `antseed buyer deposit <amount>` | Deposit USDC for payments |
|
|
23
|
+
| `antseed buyer withdraw <amount>` | Withdraw USDC from deposits |
|
|
24
|
+
| `antseed buyer balance` | Check wallet and deposit balance |
|
|
25
|
+
| `antseed network browse` | Browse available services and pricing |
|
|
26
26
|
| `antseed payments` | Launch the payments portal |
|
|
27
27
|
| **Session** | |
|
|
28
|
-
| `antseed connection get` | Show current session state (pinned service, peer) |
|
|
29
|
-
| `antseed connection set` | Update service/peer overrides on a running proxy |
|
|
30
|
-
| `antseed connection clear` | Clear service/peer overrides |
|
|
28
|
+
| `antseed buyer connection get` | Show current session state (pinned service, peer) |
|
|
29
|
+
| `antseed buyer connection set` | Update service/peer overrides on a running proxy |
|
|
30
|
+
| `antseed buyer connection clear` | Clear service/peer overrides |
|
|
31
31
|
| **Management** | |
|
|
32
|
-
| `antseed status` | Show
|
|
32
|
+
| `antseed seller status` | Show seller status |
|
|
33
|
+
| `antseed buyer status` | Show buyer status |
|
|
33
34
|
| `antseed config` | Manage configuration |
|
|
34
|
-
| `antseed
|
|
35
|
+
| `antseed profile` | Manage your peer profile |
|
|
36
|
+
| `antseed peer <peerId>` | Show a peer profile |
|
|
35
37
|
| `antseed dashboard` | Start the web dashboard |
|
|
36
|
-
| `antseed channels` | List payment channels |
|
|
37
|
-
| `antseed emissions` | View ANTS emissions and epoch info |
|
|
38
|
+
| `antseed buyer channels` | List payment channels |
|
|
39
|
+
| `antseed seller emissions info` | View ANTS emissions and epoch info |
|
|
38
40
|
| `antseed dev` | Run seller + buyer locally for testing |
|
|
39
|
-
| `antseed bootstrap` | Run a dedicated DHT bootstrap node |
|
|
41
|
+
| `antseed network bootstrap` | Run a dedicated DHT bootstrap node |
|
|
42
|
+
|
|
43
|
+
## Configuration Workflow
|
|
44
|
+
|
|
45
|
+
The normal workflow is:
|
|
46
|
+
|
|
47
|
+
1. Create or update `~/.antseed/config.json` with `antseed seller setup` or `antseed config ...`
|
|
48
|
+
2. Keep non-secret settings there: providers, services, pricing, categories, `baseUrl`, ports
|
|
49
|
+
3. Keep secrets in environment variables: API keys and `ANTSEED_IDENTITY_HEX`
|
|
50
|
+
4. Start later with `antseed seller start` or `antseed buyer start`
|
|
51
|
+
|
|
52
|
+
Once your config file exists, the usual seller flow is just:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
export OPENAI_API_KEY=sk-...
|
|
56
|
+
export ANTSEED_IDENTITY_HEX=<your-identity-key>
|
|
57
|
+
antseed seller start
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`config.json` is the durable source of truth. Env vars are for secrets and one-off overrides.
|
|
40
61
|
|
|
41
62
|
## Plugins
|
|
42
63
|
|
|
43
|
-
Antseed uses an open plugin ecosystem.
|
|
64
|
+
Antseed uses an open plugin ecosystem. Provider and router plugins are installed into `~/.antseed/plugins/` via npm.
|
|
44
65
|
|
|
45
66
|
**Providers** connect your node to an upstream AI API (seeder mode):
|
|
46
67
|
|
|
47
68
|
```bash
|
|
48
|
-
antseed
|
|
49
|
-
antseed
|
|
50
|
-
|
|
69
|
+
antseed config seller add-provider anthropic --plugin anthropic
|
|
70
|
+
antseed config seller add-service anthropic claude-sonnet-4-5-20250929 \
|
|
71
|
+
--input 12 --output 18 --cached 6 \
|
|
72
|
+
--categories coding,chat
|
|
73
|
+
antseed seller start
|
|
51
74
|
```
|
|
52
75
|
|
|
53
76
|
**Routers** select peers and proxy requests (consumer mode):
|
|
54
77
|
|
|
55
78
|
```bash
|
|
56
|
-
antseed
|
|
57
|
-
antseed connect --router local
|
|
79
|
+
antseed buyer start
|
|
58
80
|
```
|
|
59
81
|
|
|
60
|
-
Run `antseed init` to install all trusted plugins interactively.
|
|
61
|
-
|
|
62
82
|
## Configuration
|
|
63
83
|
|
|
64
84
|
Configuration is stored at `~/.antseed/config.json` by default. Use `-c` / `--config` to specify an alternative path.
|
|
@@ -84,12 +104,6 @@ For dashboard frontend debug logging, set:
|
|
|
84
104
|
VITE_ANTSEED_DEBUG=1
|
|
85
105
|
```
|
|
86
106
|
|
|
87
|
-
Initialize a new config:
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
antseed config init
|
|
91
|
-
```
|
|
92
|
-
|
|
93
107
|
Pricing is configured in USD per 1M tokens with role-specific defaults and optional provider/service overrides. You can also set node `displayName`, an optional seller `publicAddress`, and per-service category tags announced in discovery metadata:
|
|
94
108
|
|
|
95
109
|
```json
|
|
@@ -99,28 +113,26 @@ Pricing is configured in USD per 1M tokens with role-specific defaults and optio
|
|
|
99
113
|
},
|
|
100
114
|
"seller": {
|
|
101
115
|
"publicAddress": "peer.example.com:6882",
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
116
|
+
"providers": {
|
|
117
|
+
"anthropic": {
|
|
118
|
+
"plugin": "anthropic",
|
|
119
|
+
"defaults": {
|
|
120
|
+
"inputUsdPerMillion": 10,
|
|
121
|
+
"outputUsdPerMillion": 10,
|
|
122
|
+
"cachedInputUsdPerMillion": 5
|
|
123
|
+
},
|
|
124
|
+
"services": {
|
|
125
|
+
"claude-sonnet-4-5-20250929": {
|
|
126
|
+
"upstreamModel": "claude-sonnet-4-5-20250929",
|
|
127
|
+
"categories": ["coding", "chat"],
|
|
128
|
+
"pricing": {
|
|
112
129
|
"inputUsdPerMillion": 12,
|
|
113
|
-
"
|
|
114
|
-
"
|
|
130
|
+
"outputUsdPerMillion": 18,
|
|
131
|
+
"cachedInputUsdPerMillion": 6
|
|
115
132
|
}
|
|
116
133
|
}
|
|
117
134
|
}
|
|
118
135
|
}
|
|
119
|
-
},
|
|
120
|
-
"serviceCategories": {
|
|
121
|
-
"anthropic": {
|
|
122
|
-
"claude-sonnet-4-5-20250929": ["coding", "privacy"]
|
|
123
|
-
}
|
|
124
136
|
}
|
|
125
137
|
},
|
|
126
138
|
"buyer": {
|
|
@@ -135,7 +147,9 @@ Pricing is configured in USD per 1M tokens with role-specific defaults and optio
|
|
|
135
147
|
}
|
|
136
148
|
```
|
|
137
149
|
|
|
138
|
-
Service categories are normalized to lowercase tags. Recommended tags include: `
|
|
150
|
+
Service categories are normalized to lowercase tags. Recommended normie-friendly tags include: `chat`, `coding`, `math`, `study`, `creative`, `writing`, `tasks`, `fast`, `free`, `translate` (custom tags are also allowed).
|
|
151
|
+
|
|
152
|
+
The set of keys under `seller.providers.<name>.services` determines which services this peer announces on the network — there's no separate allow-list.
|
|
139
153
|
|
|
140
154
|
### Ant Agent
|
|
141
155
|
|
|
@@ -159,16 +173,21 @@ Role-first config examples:
|
|
|
159
173
|
# Identity / metadata display name
|
|
160
174
|
antseed config set identity.displayName "Acme Inference - us-east-1"
|
|
161
175
|
|
|
162
|
-
#
|
|
163
|
-
antseed config seller
|
|
164
|
-
antseed config seller
|
|
165
|
-
|
|
176
|
+
# Add a provider and then a service
|
|
177
|
+
antseed config seller add-provider anthropic --plugin anthropic --input 12 --output 18
|
|
178
|
+
antseed config seller add-service anthropic claude-sonnet-4-5-20250929 \
|
|
179
|
+
--upstream "claude-sonnet-4-5-20250929" \
|
|
180
|
+
--input 12 --output 18 --cached 6 \
|
|
181
|
+
--categories coding,chat
|
|
166
182
|
|
|
167
|
-
#
|
|
168
|
-
antseed config seller
|
|
183
|
+
# Remove a service
|
|
184
|
+
antseed config seller remove-service anthropic claude-sonnet-4-5-20250929
|
|
169
185
|
|
|
170
|
-
#
|
|
171
|
-
|
|
186
|
+
# Fine-grained edits to a service already in the config (auto-creates
|
|
187
|
+
# intermediate objects; --dynamic paths under seller.providers.* are allowed)
|
|
188
|
+
antseed config seller set providers.anthropic.defaults.inputUsdPerMillion 12
|
|
189
|
+
antseed config seller set providers.anthropic.services.claude-sonnet-4-5-20250929.pricing.outputUsdPerMillion 20
|
|
190
|
+
antseed config seller set providers.anthropic.services.claude-sonnet-4-5-20250929.categories '["coding","legal"]'
|
|
172
191
|
|
|
173
192
|
# Seller public address override for load-balanced deployments
|
|
174
193
|
antseed config seller set publicAddress "peer.example.com:6882"
|
|
@@ -182,33 +201,33 @@ antseed config buyer set maxPricing.defaults.outputUsdPerMillion 75
|
|
|
182
201
|
Runtime-only overrides (do not write your config file):
|
|
183
202
|
|
|
184
203
|
```bash
|
|
185
|
-
antseed
|
|
186
|
-
antseed
|
|
204
|
+
antseed seller start --provider anthropic --input-usd-per-million 10 --cached-input-usd-per-million 5 --output-usd-per-million 30
|
|
205
|
+
antseed buyer start --max-input-usd-per-million 20 --max-cached-input-usd-per-million 10 --max-output-usd-per-million 60
|
|
187
206
|
```
|
|
188
207
|
|
|
189
208
|
### Session overrides (live, while proxy is running)
|
|
190
209
|
|
|
191
|
-
After `antseed
|
|
210
|
+
After `antseed buyer start` is running, you can override the service or peer for all subsequent requests without restarting:
|
|
192
211
|
|
|
193
212
|
```bash
|
|
194
213
|
# Pin all requests to a specific service (overrides whatever the tool sends)
|
|
195
|
-
antseed connection set --service claude-opus-4-6
|
|
214
|
+
antseed buyer connection set --service claude-opus-4-6
|
|
196
215
|
|
|
197
216
|
# Pin all requests to a specific peer (bypasses router for peer selection)
|
|
198
|
-
antseed connection set --peer <40-char-hex-peer-id>
|
|
217
|
+
antseed buyer connection set --peer <40-char-hex-peer-id>
|
|
199
218
|
|
|
200
219
|
# Combine both in one command
|
|
201
|
-
antseed connection set --service claude-sonnet-4-6 --peer <peer-id>
|
|
220
|
+
antseed buyer connection set --service claude-sonnet-4-6 --peer <peer-id>
|
|
202
221
|
|
|
203
222
|
# Check current session state
|
|
204
|
-
antseed connection get
|
|
223
|
+
antseed buyer connection get
|
|
205
224
|
|
|
206
225
|
# Clear individual overrides
|
|
207
|
-
antseed connection clear --service
|
|
208
|
-
antseed connection clear --peer
|
|
226
|
+
antseed buyer connection clear --service
|
|
227
|
+
antseed buyer connection clear --peer
|
|
209
228
|
|
|
210
229
|
# Clear all overrides at once
|
|
211
|
-
antseed connection clear
|
|
230
|
+
antseed buyer connection clear
|
|
212
231
|
```
|
|
213
232
|
|
|
214
233
|
Session overrides are stored in `~/.antseed/buyer.state.json` and picked up by the running proxy immediately via file-watching. The desktop app reads and writes the same file to expose service/peer selection in its UI.
|
|
@@ -228,16 +247,13 @@ export ANTSEED_IDENTITY_HEX=<your-private-key-hex>
|
|
|
228
247
|
# 2. Fund your wallet with ETH (for gas) and USDC (for staking) on Base Mainnet
|
|
229
248
|
|
|
230
249
|
# 3. Register your identity on-chain
|
|
231
|
-
antseed register
|
|
250
|
+
antseed seller register
|
|
232
251
|
|
|
233
252
|
# 4. Stake USDC (minimum $10)
|
|
234
|
-
antseed stake 10
|
|
235
|
-
|
|
236
|
-
# 5. Check readiness
|
|
237
|
-
antseed setup --role provider
|
|
253
|
+
antseed seller stake 10
|
|
238
254
|
|
|
239
255
|
# 6. Start providing
|
|
240
|
-
antseed
|
|
256
|
+
antseed seller start
|
|
241
257
|
```
|
|
242
258
|
|
|
243
259
|
### Buyer Setup (Consuming)
|
|
@@ -255,7 +271,7 @@ antseed payments
|
|
|
255
271
|
# connected wallet and credits your node — the identity key never holds funds.
|
|
256
272
|
|
|
257
273
|
# 4. Connect to the network
|
|
258
|
-
antseed
|
|
274
|
+
antseed buyer start
|
|
259
275
|
# Proxy listening on http://localhost:8377
|
|
260
276
|
```
|
|
261
277
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAwDnE"}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
-
import { getGlobalOptions } from '
|
|
4
|
-
import { loadConfig } from '
|
|
3
|
+
import { getGlobalOptions } from '../types.js';
|
|
4
|
+
import { loadConfig } from '../../../config/loader.js';
|
|
5
5
|
import { loadOrCreateIdentity, DepositsClient, resolveChainConfig, } from '@antseed/node';
|
|
6
|
-
/** Format USDC base units (6 decimals) to human-readable string. */
|
|
7
6
|
function formatUsdc(baseUnits) {
|
|
8
7
|
const whole = baseUnits / 1000000n;
|
|
9
8
|
const frac = baseUnits % 1000000n;
|
|
10
9
|
const fracStr = frac.toString().padStart(6, '0').replace(/0+$/, '') || '0';
|
|
11
10
|
return `${whole}.${fracStr}`;
|
|
12
11
|
}
|
|
13
|
-
export function
|
|
14
|
-
|
|
12
|
+
export function registerBuyerBalanceCommand(buyerCmd) {
|
|
13
|
+
buyerCmd
|
|
15
14
|
.command('balance')
|
|
16
15
|
.description('Show deposits balance for your wallet')
|
|
17
16
|
.option('--json', 'output as JSON', false)
|
|
18
17
|
.action(async (options) => {
|
|
19
|
-
const globalOpts = getGlobalOptions(
|
|
18
|
+
const globalOpts = getGlobalOptions(buyerCmd);
|
|
20
19
|
const config = await loadConfig(globalOpts.config);
|
|
21
20
|
const payments = config.payments;
|
|
22
21
|
const chainConfig = resolveChainConfig({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/balance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAyDpE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { getGlobalOptions } from '
|
|
3
|
-
import { openChannelStore } from '
|
|
4
|
-
/** Abbreviate a session/peer ID to a short form. */
|
|
2
|
+
import { getGlobalOptions } from '../types.js';
|
|
3
|
+
import { openChannelStore } from '../../payment-utils.js';
|
|
5
4
|
function short(id, len = 10) {
|
|
6
5
|
return id.length > len ? id.slice(0, len) + '...' : id;
|
|
7
6
|
}
|
|
@@ -14,8 +13,8 @@ function statusColor(status) {
|
|
|
14
13
|
default: return status;
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
|
-
export function
|
|
18
|
-
|
|
16
|
+
export function registerBuyerChannelsCommand(buyerCmd) {
|
|
17
|
+
buyerCmd
|
|
19
18
|
.command('channels')
|
|
20
19
|
.description('List payment channels from local store')
|
|
21
20
|
.option('--status <status>', 'filter by status: active, settled, timeout, ghost')
|
|
@@ -23,7 +22,7 @@ export function registerChannelsCommand(program) {
|
|
|
23
22
|
.option('--limit <number>', 'max number of channels to show', '20')
|
|
24
23
|
.option('--json', 'output as JSON', false)
|
|
25
24
|
.action(async (options) => {
|
|
26
|
-
const globalOpts = getGlobalOptions(
|
|
25
|
+
const globalOpts = getGlobalOptions(buyerCmd);
|
|
27
26
|
let store;
|
|
28
27
|
try {
|
|
29
28
|
store = openChannelStore(globalOpts.dataDir);
|
|
@@ -34,22 +33,15 @@ export function registerChannelsCommand(program) {
|
|
|
34
33
|
process.exit(1);
|
|
35
34
|
}
|
|
36
35
|
try {
|
|
37
|
-
// Query channels — ChannelStore doesn't have a generic list method,
|
|
38
|
-
// so we use the DB directly via the available methods.
|
|
39
|
-
// For now, we read from the active/timeout channels.
|
|
40
36
|
const limit = parseInt(options.limit, 10) || 20;
|
|
41
37
|
const statusFilter = options.status;
|
|
42
38
|
const roleFilter = options.role;
|
|
43
39
|
const allSessions = store.listAllChannels(limit * 2);
|
|
44
|
-
// Apply filters
|
|
45
40
|
let filtered = allSessions;
|
|
46
|
-
if (statusFilter)
|
|
47
|
-
filtered = filtered.filter(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
filtered = filtered.filter(s => s.role === roleFilter);
|
|
51
|
-
}
|
|
52
|
-
// Sort by most recent first
|
|
41
|
+
if (statusFilter)
|
|
42
|
+
filtered = filtered.filter((session) => session.status === statusFilter);
|
|
43
|
+
if (roleFilter)
|
|
44
|
+
filtered = filtered.filter((session) => session.role === roleFilter);
|
|
53
45
|
filtered.sort((a, b) => b.updatedAt - a.updatedAt);
|
|
54
46
|
const limited = filtered.slice(0, limit);
|
|
55
47
|
if (options.json) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/channels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6DxC,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAoFtE"}
|
|
@@ -37,17 +37,17 @@ function isProcessAlive(pid) {
|
|
|
37
37
|
async function requireRunningBuyer() {
|
|
38
38
|
const state = await readStateFile();
|
|
39
39
|
if (!state) {
|
|
40
|
-
console.error(chalk.red('No buyer connection found. Run `antseed
|
|
40
|
+
console.error(chalk.red('No buyer connection found. Run `antseed buyer start` first.'));
|
|
41
41
|
process.exit(1);
|
|
42
42
|
}
|
|
43
43
|
if (state.state !== 'connected' || !isProcessAlive(state.pid)) {
|
|
44
|
-
console.error(chalk.red('Buyer proxy is not running. Run `antseed
|
|
44
|
+
console.error(chalk.red('Buyer proxy is not running. Run `antseed buyer start` first.'));
|
|
45
45
|
process.exit(1);
|
|
46
46
|
}
|
|
47
47
|
return state;
|
|
48
48
|
}
|
|
49
|
-
export function
|
|
50
|
-
const connection =
|
|
49
|
+
export function registerBuyerConnectionCommand(buyerCmd) {
|
|
50
|
+
const connection = buyerCmd
|
|
51
51
|
.command('connection')
|
|
52
52
|
.description('Manage the active buyer connection session');
|
|
53
53
|
connection
|
|
@@ -56,7 +56,7 @@ export function registerConnectionCommand(program) {
|
|
|
56
56
|
.action(async () => {
|
|
57
57
|
const state = await readStateFile();
|
|
58
58
|
if (!state) {
|
|
59
|
-
console.log(chalk.yellow('No buyer connection state found. Run `antseed
|
|
59
|
+
console.log(chalk.yellow('No buyer connection state found. Run `antseed buyer start` first.'));
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
62
|
const alive = state.state === 'connected' && isProcessAlive(state.pid);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAkCnE"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
-
import { getGlobalOptions } from '
|
|
4
|
-
import { loadConfig } from '
|
|
5
|
-
import { createDepositsClient, loadCryptoContext, parseUsdcToBaseUnits, } from '
|
|
6
|
-
export function
|
|
7
|
-
|
|
3
|
+
import { getGlobalOptions } from '../types.js';
|
|
4
|
+
import { loadConfig } from '../../../config/loader.js';
|
|
5
|
+
import { createDepositsClient, loadCryptoContext, parseUsdcToBaseUnits, } from '../../payment-utils.js';
|
|
6
|
+
export function registerBuyerDepositCommand(buyerCmd) {
|
|
7
|
+
buyerCmd
|
|
8
8
|
.command('deposit <amount>')
|
|
9
9
|
.description('Deposit USDC into the deposits contract (amount in human-readable USDC, e.g. "5" = 5 USDC)')
|
|
10
10
|
.action(async (amount) => {
|
|
11
|
-
const globalOpts = getGlobalOptions(
|
|
11
|
+
const globalOpts = getGlobalOptions(buyerCmd);
|
|
12
12
|
const config = await loadConfig(globalOpts.config);
|
|
13
13
|
let amountBaseUnits;
|
|
14
14
|
try {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/deposit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,UAAU,2BAA2B,CAAC,QAAiB;IAC3D,QAAQ;SACL,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,4FAA4F,CAAC;SACzG,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,eAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,WAAW,UAAU,eAAe,cAAc,CAAC,CAAC,CAAC;QAEtF,MAAM,OAAO,GAAG,GAAG,CAAC,2CAA2C,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YAC9E,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,WAAW,8BAA8B,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc5D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { registerBuyerStartCommand } from './start.js';
|
|
2
|
+
import { registerBuyerStatusCommand } from './status.js';
|
|
3
|
+
import { registerBuyerDepositCommand } from './deposit.js';
|
|
4
|
+
import { registerBuyerWithdrawCommand } from './withdraw.js';
|
|
5
|
+
import { registerBuyerBalanceCommand } from './balance.js';
|
|
6
|
+
import { registerBuyerSubscribeCommand } from './subscribe.js';
|
|
7
|
+
import { registerBuyerConnectionCommand } from './connection.js';
|
|
8
|
+
import { registerBuyerChannelsCommand } from './channels.js';
|
|
9
|
+
import { registerBuyerMeteringCommand } from './metering.js';
|
|
10
|
+
export function registerBuyerCommands(program) {
|
|
11
|
+
const buyerCmd = program
|
|
12
|
+
.command('buyer')
|
|
13
|
+
.description('Buyer commands — connect to sellers and manage payments');
|
|
14
|
+
registerBuyerStartCommand(buyerCmd);
|
|
15
|
+
registerBuyerStatusCommand(buyerCmd);
|
|
16
|
+
registerBuyerDepositCommand(buyerCmd);
|
|
17
|
+
registerBuyerWithdrawCommand(buyerCmd);
|
|
18
|
+
registerBuyerBalanceCommand(buyerCmd);
|
|
19
|
+
registerBuyerSubscribeCommand(buyerCmd);
|
|
20
|
+
registerBuyerConnectionCommand(buyerCmd);
|
|
21
|
+
registerBuyerChannelsCommand(buyerCmd);
|
|
22
|
+
registerBuyerMeteringCommand(buyerCmd);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAE1E,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACpC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACrC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACtC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACvC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACtC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACxC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACzC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACvC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metering.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/metering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAoFpE"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { getGlobalOptions } from '
|
|
2
|
+
import { getGlobalOptions } from '../types.js';
|
|
3
3
|
import { loadOrCreateIdentity } from '@antseed/node';
|
|
4
|
-
import { openChannelStore } from '
|
|
5
|
-
/** Format USDC base units (6 decimals) to human-readable string. */
|
|
4
|
+
import { openChannelStore } from '../../payment-utils.js';
|
|
6
5
|
function formatUsdc(baseUnits) {
|
|
7
6
|
const n = BigInt(baseUnits);
|
|
8
7
|
const abs = n < 0n ? -n : n;
|
|
@@ -12,14 +11,14 @@ function formatUsdc(baseUnits) {
|
|
|
12
11
|
const fracStr = frac.toString().padStart(6, '0').replace(/0+$/, '') || '0';
|
|
13
12
|
return `${sign}${whole}.${fracStr}`;
|
|
14
13
|
}
|
|
15
|
-
export function
|
|
16
|
-
|
|
14
|
+
export function registerBuyerMeteringCommand(buyerCmd) {
|
|
15
|
+
buyerCmd
|
|
17
16
|
.command('metering')
|
|
18
17
|
.description('Show payment channel and usage stats from local database')
|
|
19
18
|
.option('--peer <peerId>', 'show stats for a specific peer')
|
|
20
19
|
.option('--json', 'output as JSON', false)
|
|
21
20
|
.action(async (options) => {
|
|
22
|
-
const globalOpts = getGlobalOptions(
|
|
21
|
+
const globalOpts = getGlobalOptions(buyerCmd);
|
|
23
22
|
try {
|
|
24
23
|
const identity = await loadOrCreateIdentity(globalOpts.dataDir);
|
|
25
24
|
const buyerAddress = identity.wallet.address;
|
|
@@ -27,10 +26,9 @@ export function registerMeteringCommand(program) {
|
|
|
27
26
|
try {
|
|
28
27
|
const activeChannels = store.getActiveChannels('buyer');
|
|
29
28
|
const channels = options.peer
|
|
30
|
-
? activeChannels.filter((
|
|
29
|
+
? activeChannels.filter((channel) => channel.peerId === options.peer)
|
|
31
30
|
: activeChannels;
|
|
32
31
|
if (channels.length === 0) {
|
|
33
|
-
// Show settled channels if no active ones
|
|
34
32
|
const allChannels = options.peer
|
|
35
33
|
? [store.getLatestChannelByPeerAndBuyer(options.peer, 'buyer', buyerAddress)].filter(Boolean)
|
|
36
34
|
: [];
|
|
@@ -40,10 +38,9 @@ export function registerMeteringCommand(program) {
|
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
40
|
const results = {};
|
|
43
|
-
// Collect unique peers (active + specific peer)
|
|
44
41
|
const peerIds = options.peer
|
|
45
42
|
? [options.peer]
|
|
46
|
-
: [...new Set(activeChannels.map((
|
|
43
|
+
: [...new Set(activeChannels.map((channel) => channel.peerId))];
|
|
47
44
|
for (const peerId of peerIds) {
|
|
48
45
|
const channel = store.getActiveChannelByPeerAndBuyer(peerId, 'buyer', buyerAddress)
|
|
49
46
|
?? store.getLatestChannelByPeerAndBuyer(peerId, 'buyer', buyerAddress);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metering.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/metering.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metering.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/metering.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metering.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/metering.test.ts"],"names":[],"mappings":"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"}
|