@dominusnode/pi-extension 1.2.0 → 1.5.2
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/CHANGELOG.md +1 -0
- package/README.md +60 -58
- package/dist/index.js +150 -42
- package/dist/toolkit.d.ts +6 -0
- package/dist/toolkit.js +309 -49
- package/package.json +3 -1
- package/skills/use-dominus-proxy.md +37 -31
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ npm install @dominusnode/pi-extension
|
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Declare in your project's `package.json`:
|
|
18
|
+
|
|
18
19
|
```json
|
|
19
20
|
{
|
|
20
21
|
"pi": {
|
|
@@ -26,6 +27,7 @@ Declare in your project's `package.json`:
|
|
|
26
27
|
### Manual Extension
|
|
27
28
|
|
|
28
29
|
Copy or symlink the `dist/` folder into your Pi extensions directory:
|
|
30
|
+
|
|
29
31
|
```bash
|
|
30
32
|
~/.pi/agent/extensions/dominusnode/ # global
|
|
31
33
|
.pi/extensions/dominusnode/ # project-local
|
|
@@ -41,61 +43,61 @@ Get your API key at [dominusnode.com](https://dominusnode.com) → Dashboard →
|
|
|
41
43
|
|
|
42
44
|
## Available Tools (53 total)
|
|
43
45
|
|
|
44
|
-
| Tool
|
|
45
|
-
|
|
46
|
-
| `dominusnode_proxied_fetch`
|
|
47
|
-
| `dominusnode_check_balance`
|
|
48
|
-
| `dominusnode_check_usage`
|
|
49
|
-
| `dominusnode_get_proxy_config`
|
|
50
|
-
| `dominusnode_list_sessions`
|
|
51
|
-
| `dominusnode_create_agentic_wallet`
|
|
52
|
-
| `dominusnode_fund_agentic_wallet`
|
|
53
|
-
| `dominusnode_check_agentic_balance`
|
|
54
|
-
| `dominusnode_list_agentic_wallets`
|
|
55
|
-
| `dominusnode_agentic_transactions`
|
|
56
|
-
| `dominusnode_freeze_agentic_wallet`
|
|
57
|
-
| `dominusnode_unfreeze_agentic_wallet` | Unfreeze sub-wallet
|
|
58
|
-
| `dominusnode_delete_agentic_wallet`
|
|
59
|
-
| `dominusnode_create_team`
|
|
60
|
-
| `dominusnode_list_teams`
|
|
61
|
-
| `dominusnode_team_details`
|
|
62
|
-
| `dominusnode_team_fund`
|
|
63
|
-
| `dominusnode_team_create_api_key`
|
|
64
|
-
| `dominusnode_team_usage`
|
|
65
|
-
| `dominusnode_update_team`
|
|
66
|
-
| `dominusnode_update_team_member_role` | Change member role
|
|
67
|
-
| `dominusnode_topup_paypal`
|
|
68
|
-
| `dominusnode_topup_stripe`
|
|
69
|
-
| `dominusnode_topup_crypto`
|
|
70
|
-
| `dominusnode_x402_info`
|
|
71
|
-
| `dominusnode_update_wallet_policy`
|
|
72
|
-
| `dominusnode_get_proxy_status`
|
|
73
|
-
| `dominusnode_get_transactions`
|
|
74
|
-
| `dominusnode_get_forecast`
|
|
75
|
-
| `dominusnode_check_payment`
|
|
76
|
-
| `dominusnode_get_daily_usage`
|
|
77
|
-
| `dominusnode_get_top_hosts`
|
|
78
|
-
| `dominusnode_register`
|
|
79
|
-
| `dominusnode_login`
|
|
80
|
-
| `dominusnode_get_account_info`
|
|
81
|
-
| `dominusnode_verify_email`
|
|
82
|
-
| `dominusnode_resend_verification`
|
|
83
|
-
| `dominusnode_update_password`
|
|
84
|
-
| `dominusnode_list_keys`
|
|
85
|
-
| `dominusnode_create_key`
|
|
86
|
-
| `dominusnode_revoke_key`
|
|
87
|
-
| `dominusnode_get_plan`
|
|
88
|
-
| `dominusnode_list_plans`
|
|
89
|
-
| `dominusnode_change_plan`
|
|
90
|
-
| `dominusnode_team_delete`
|
|
91
|
-
| `dominusnode_team_revoke_key`
|
|
92
|
-
| `dominusnode_team_list_keys`
|
|
93
|
-
| `dominusnode_team_list_members`
|
|
94
|
-
| `dominusnode_team_add_member`
|
|
95
|
-
| `dominusnode_team_remove_member`
|
|
96
|
-
| `dominusnode_team_invite_member`
|
|
97
|
-
| `dominusnode_team_list_invites`
|
|
98
|
-
| `dominusnode_team_cancel_invite`
|
|
46
|
+
| Tool | Description |
|
|
47
|
+
| ------------------------------------- | ---------------------------------------------------- |
|
|
48
|
+
| `dominusnode_proxied_fetch` | Fetch a URL through rotating IPs (DC or residential) |
|
|
49
|
+
| `dominusnode_check_balance` | Get wallet balance |
|
|
50
|
+
| `dominusnode_check_usage` | Bandwidth usage stats |
|
|
51
|
+
| `dominusnode_get_proxy_config` | Proxy endpoint details |
|
|
52
|
+
| `dominusnode_list_sessions` | Active proxy sessions |
|
|
53
|
+
| `dominusnode_create_agentic_wallet` | Create agent sub-wallet |
|
|
54
|
+
| `dominusnode_fund_agentic_wallet` | Fund agent sub-wallet |
|
|
55
|
+
| `dominusnode_check_agentic_balance` | Sub-wallet balance |
|
|
56
|
+
| `dominusnode_list_agentic_wallets` | All sub-wallets |
|
|
57
|
+
| `dominusnode_agentic_transactions` | Sub-wallet transaction history |
|
|
58
|
+
| `dominusnode_freeze_agentic_wallet` | Freeze sub-wallet |
|
|
59
|
+
| `dominusnode_unfreeze_agentic_wallet` | Unfreeze sub-wallet |
|
|
60
|
+
| `dominusnode_delete_agentic_wallet` | Delete sub-wallet |
|
|
61
|
+
| `dominusnode_create_team` | Create team with shared wallet |
|
|
62
|
+
| `dominusnode_list_teams` | List teams |
|
|
63
|
+
| `dominusnode_team_details` | Team details and balance |
|
|
64
|
+
| `dominusnode_team_fund` | Fund team wallet |
|
|
65
|
+
| `dominusnode_team_create_api_key` | Create team API key |
|
|
66
|
+
| `dominusnode_team_usage` | Team bandwidth stats |
|
|
67
|
+
| `dominusnode_update_team` | Update team settings |
|
|
68
|
+
| `dominusnode_update_team_member_role` | Change member role |
|
|
69
|
+
| `dominusnode_topup_paypal` | Top up via PayPal |
|
|
70
|
+
| `dominusnode_topup_stripe` | Top up via Stripe |
|
|
71
|
+
| `dominusnode_topup_crypto` | Top up via crypto (BTC/ETH/USDC/...) |
|
|
72
|
+
| `dominusnode_x402_info` | x402 micropayment config |
|
|
73
|
+
| `dominusnode_update_wallet_policy` | Set spending limits/domain restrictions |
|
|
74
|
+
| `dominusnode_get_proxy_status` | Proxy gateway status and pool health |
|
|
75
|
+
| `dominusnode_get_transactions` | Wallet transaction history |
|
|
76
|
+
| `dominusnode_get_forecast` | Spending forecast and projected costs |
|
|
77
|
+
| `dominusnode_check_payment` | Check crypto payment status by invoice ID |
|
|
78
|
+
| `dominusnode_get_daily_usage` | Daily bandwidth usage breakdown |
|
|
79
|
+
| `dominusnode_get_top_hosts` | Top hosts by bandwidth usage |
|
|
80
|
+
| `dominusnode_register` | Register a new account |
|
|
81
|
+
| `dominusnode_login` | Log in to an existing account |
|
|
82
|
+
| `dominusnode_get_account_info` | Get account profile information |
|
|
83
|
+
| `dominusnode_verify_email` | Verify email with token |
|
|
84
|
+
| `dominusnode_resend_verification` | Resend email verification link |
|
|
85
|
+
| `dominusnode_update_password` | Change account password |
|
|
86
|
+
| `dominusnode_list_keys` | List personal API keys |
|
|
87
|
+
| `dominusnode_create_key` | Create a new personal API key |
|
|
88
|
+
| `dominusnode_revoke_key` | Revoke a personal API key |
|
|
89
|
+
| `dominusnode_get_plan` | Get current subscription plan |
|
|
90
|
+
| `dominusnode_list_plans` | List available plans |
|
|
91
|
+
| `dominusnode_change_plan` | Change subscription plan |
|
|
92
|
+
| `dominusnode_team_delete` | Delete a team |
|
|
93
|
+
| `dominusnode_team_revoke_key` | Revoke a team API key |
|
|
94
|
+
| `dominusnode_team_list_keys` | List team API keys |
|
|
95
|
+
| `dominusnode_team_list_members` | List team members |
|
|
96
|
+
| `dominusnode_team_add_member` | Add a member to a team |
|
|
97
|
+
| `dominusnode_team_remove_member` | Remove a member from a team |
|
|
98
|
+
| `dominusnode_team_invite_member` | Invite a user to a team by email |
|
|
99
|
+
| `dominusnode_team_list_invites` | List pending team invitations |
|
|
100
|
+
| `dominusnode_team_cancel_invite` | Cancel a pending team invitation |
|
|
99
101
|
|
|
100
102
|
## Proxy Usage
|
|
101
103
|
|
|
@@ -135,9 +137,9 @@ Give each sub-agent its own wallet with a spending cap:
|
|
|
135
137
|
|
|
136
138
|
## Pricing
|
|
137
139
|
|
|
138
|
-
| Pool
|
|
139
|
-
|
|
140
|
-
| Datacenter
|
|
140
|
+
| Pool | Price | Best for |
|
|
141
|
+
| ----------- | -------- | -------------------------------------------- |
|
|
142
|
+
| Datacenter | $3.00/GB | Fast scraping, APIs, speed-sensitive tasks |
|
|
141
143
|
| Residential | $5.00/GB | Bypassing geo-blocks, appearing as real user |
|
|
142
144
|
|
|
143
145
|
## License
|
package/dist/index.js
CHANGED
|
@@ -49,14 +49,20 @@ function dominusNodeExtension(pi) {
|
|
|
49
49
|
"Use for web scraping, bypassing geo-restrictions, or rotating IPs. " +
|
|
50
50
|
"Only GET, HEAD, and OPTIONS are permitted. Private/internal URLs are blocked.",
|
|
51
51
|
parameters: typebox_1.Type.Object({
|
|
52
|
-
url: typebox_1.Type.String({
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
], { description: "HTTP method (default: GET)" })),
|
|
56
|
-
country: typebox_1.Type.Optional(typebox_1.Type.String({
|
|
52
|
+
url: typebox_1.Type.String({
|
|
53
|
+
description: "Target URL to fetch (http or https only)",
|
|
54
|
+
}),
|
|
55
|
+
method: typebox_1.Type.Optional(typebox_1.Type.Union([typebox_1.Type.Literal("GET"), typebox_1.Type.Literal("HEAD"), typebox_1.Type.Literal("OPTIONS")], { description: "HTTP method (default: GET)" })),
|
|
56
|
+
country: typebox_1.Type.Optional(typebox_1.Type.String({
|
|
57
|
+
description: "ISO 3166-1 two-letter country code for geo-targeting (e.g. US, GB, DE)",
|
|
58
|
+
})),
|
|
57
59
|
proxyType: typebox_1.Type.Optional(typebox_1.Type.Union([
|
|
58
|
-
typebox_1.Type.Literal("dc"),
|
|
59
|
-
|
|
60
|
+
typebox_1.Type.Literal("dc"),
|
|
61
|
+
typebox_1.Type.Literal("residential"),
|
|
62
|
+
typebox_1.Type.Literal("auto"),
|
|
63
|
+
], {
|
|
64
|
+
description: "Proxy pool: 'dc' (datacenter, $3/GB), 'residential' ($5/GB), or 'auto' (default: dc)",
|
|
65
|
+
})),
|
|
60
66
|
}),
|
|
61
67
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
62
68
|
return toolkit.proxiedFetch(String(params.url ?? ""), String(params.method ?? "GET"), params.country ? String(params.country) : undefined, String(params.proxyType ?? "dc"));
|
|
@@ -78,7 +84,11 @@ function dominusNodeExtension(pi) {
|
|
|
78
84
|
label: "DominusNode: Check Bandwidth Usage",
|
|
79
85
|
description: "Get bandwidth usage statistics for the past N days (1–365). Shows bytes consumed by datacenter and residential proxy pools.",
|
|
80
86
|
parameters: typebox_1.Type.Object({
|
|
81
|
-
days: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
87
|
+
days: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
88
|
+
description: "Number of days to look back (default: 30, max: 365)",
|
|
89
|
+
minimum: 1,
|
|
90
|
+
maximum: 365,
|
|
91
|
+
})),
|
|
82
92
|
}),
|
|
83
93
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
84
94
|
return toolkit.checkUsage(params.days !== undefined ? Number(params.days) : 30);
|
|
@@ -111,11 +121,19 @@ function dominusNodeExtension(pi) {
|
|
|
111
121
|
description: "Create a server-side sub-wallet for an AI agent with an optional per-transaction spending limit. " +
|
|
112
122
|
"Useful for giving sub-agents controlled budgets. Wallets are funded from the main wallet.",
|
|
113
123
|
parameters: typebox_1.Type.Object({
|
|
114
|
-
label: typebox_1.Type.String({
|
|
115
|
-
|
|
124
|
+
label: typebox_1.Type.String({
|
|
125
|
+
description: "Human-readable name for this wallet (e.g. 'research-agent-1')",
|
|
126
|
+
}),
|
|
127
|
+
spendingLimitCents: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
128
|
+
description: "Maximum spend per transaction in cents (e.g. 500 = $5.00)",
|
|
129
|
+
minimum: 1,
|
|
130
|
+
maximum: 1000000,
|
|
131
|
+
})),
|
|
116
132
|
}),
|
|
117
133
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
118
|
-
return toolkit.createAgenticWallet(String(params.label ?? ""), params.spendingLimitCents !== undefined
|
|
134
|
+
return toolkit.createAgenticWallet(String(params.label ?? ""), params.spendingLimitCents !== undefined
|
|
135
|
+
? Number(params.spendingLimitCents)
|
|
136
|
+
: undefined);
|
|
119
137
|
},
|
|
120
138
|
});
|
|
121
139
|
// ── Tool 7: fund_agentic_wallet ──────────────────────────────────────────
|
|
@@ -124,8 +142,13 @@ function dominusNodeExtension(pi) {
|
|
|
124
142
|
label: "DominusNode: Fund Agentic Wallet",
|
|
125
143
|
description: "Transfer funds from the main wallet to an agentic sub-wallet. Amount in cents (e.g. 1000 = $10.00).",
|
|
126
144
|
parameters: typebox_1.Type.Object({
|
|
127
|
-
walletId: typebox_1.Type.String({
|
|
128
|
-
|
|
145
|
+
walletId: typebox_1.Type.String({
|
|
146
|
+
description: "UUID of the agentic wallet to fund",
|
|
147
|
+
}),
|
|
148
|
+
amountCents: typebox_1.Type.Number({
|
|
149
|
+
description: "Amount to transfer in cents (e.g. 1000 = $10.00)",
|
|
150
|
+
minimum: 1,
|
|
151
|
+
}),
|
|
129
152
|
}),
|
|
130
153
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
131
154
|
return toolkit.fundAgenticWallet(String(params.walletId ?? ""), Number(params.amountCents));
|
|
@@ -160,7 +183,11 @@ function dominusNodeExtension(pi) {
|
|
|
160
183
|
description: "List recent transactions for an agentic sub-wallet.",
|
|
161
184
|
parameters: typebox_1.Type.Object({
|
|
162
185
|
walletId: typebox_1.Type.String({ description: "UUID of the agentic wallet" }),
|
|
163
|
-
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
186
|
+
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
187
|
+
description: "Number of transactions to return (default: 20, max: 100)",
|
|
188
|
+
minimum: 1,
|
|
189
|
+
maximum: 100,
|
|
190
|
+
})),
|
|
164
191
|
}),
|
|
165
192
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
166
193
|
return toolkit.agenticTransactions(String(params.walletId ?? ""), params.limit !== undefined ? Number(params.limit) : 20);
|
|
@@ -172,7 +199,9 @@ function dominusNodeExtension(pi) {
|
|
|
172
199
|
label: "DominusNode: Freeze Agentic Wallet",
|
|
173
200
|
description: "Freeze an agentic sub-wallet to prevent further spending. The wallet must be unfrozen before it can be deleted.",
|
|
174
201
|
parameters: typebox_1.Type.Object({
|
|
175
|
-
walletId: typebox_1.Type.String({
|
|
202
|
+
walletId: typebox_1.Type.String({
|
|
203
|
+
description: "UUID of the agentic wallet to freeze",
|
|
204
|
+
}),
|
|
176
205
|
}),
|
|
177
206
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
178
207
|
return toolkit.freezeAgenticWallet(String(params.walletId ?? ""));
|
|
@@ -184,7 +213,9 @@ function dominusNodeExtension(pi) {
|
|
|
184
213
|
label: "DominusNode: Unfreeze Agentic Wallet",
|
|
185
214
|
description: "Unfreeze a previously frozen agentic sub-wallet to resume spending.",
|
|
186
215
|
parameters: typebox_1.Type.Object({
|
|
187
|
-
walletId: typebox_1.Type.String({
|
|
216
|
+
walletId: typebox_1.Type.String({
|
|
217
|
+
description: "UUID of the agentic wallet to unfreeze",
|
|
218
|
+
}),
|
|
188
219
|
}),
|
|
189
220
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
190
221
|
return toolkit.unfreezeAgenticWallet(String(params.walletId ?? ""));
|
|
@@ -196,7 +227,9 @@ function dominusNodeExtension(pi) {
|
|
|
196
227
|
label: "DominusNode: Delete Agentic Wallet",
|
|
197
228
|
description: "Permanently delete an agentic sub-wallet. Any remaining balance is returned to the main wallet. The wallet must be frozen first.",
|
|
198
229
|
parameters: typebox_1.Type.Object({
|
|
199
|
-
walletId: typebox_1.Type.String({
|
|
230
|
+
walletId: typebox_1.Type.String({
|
|
231
|
+
description: "UUID of the agentic wallet to delete (must be frozen first)",
|
|
232
|
+
}),
|
|
200
233
|
}),
|
|
201
234
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
202
235
|
return toolkit.deleteAgenticWallet(String(params.walletId ?? ""));
|
|
@@ -209,7 +242,11 @@ function dominusNodeExtension(pi) {
|
|
|
209
242
|
description: "Create a new team with a shared wallet. Teams allow multiple users or agents to share bandwidth and billing.",
|
|
210
243
|
parameters: typebox_1.Type.Object({
|
|
211
244
|
name: typebox_1.Type.String({ description: "Team name" }),
|
|
212
|
-
maxMembers: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
245
|
+
maxMembers: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
246
|
+
description: "Maximum number of members (default: 10, max: 100)",
|
|
247
|
+
minimum: 1,
|
|
248
|
+
maximum: 100,
|
|
249
|
+
})),
|
|
213
250
|
}),
|
|
214
251
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
215
252
|
return toolkit.createTeam(String(params.name ?? ""), params.maxMembers !== undefined ? Number(params.maxMembers) : 10);
|
|
@@ -221,7 +258,11 @@ function dominusNodeExtension(pi) {
|
|
|
221
258
|
label: "DominusNode: List Teams",
|
|
222
259
|
description: "List all teams the current account belongs to.",
|
|
223
260
|
parameters: typebox_1.Type.Object({
|
|
224
|
-
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
261
|
+
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
262
|
+
description: "Number of teams to return (default: 20, max: 100)",
|
|
263
|
+
minimum: 1,
|
|
264
|
+
maximum: 100,
|
|
265
|
+
})),
|
|
225
266
|
}),
|
|
226
267
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
227
268
|
return toolkit.listTeams(params.limit !== undefined ? Number(params.limit) : 20);
|
|
@@ -246,7 +287,10 @@ function dominusNodeExtension(pi) {
|
|
|
246
287
|
description: "Transfer funds from the main wallet to a team's shared wallet. Amount in cents.",
|
|
247
288
|
parameters: typebox_1.Type.Object({
|
|
248
289
|
teamId: typebox_1.Type.String({ description: "UUID of the team" }),
|
|
249
|
-
amountCents: typebox_1.Type.Number({
|
|
290
|
+
amountCents: typebox_1.Type.Number({
|
|
291
|
+
description: "Amount to transfer in cents (e.g. 1000 = $10.00)",
|
|
292
|
+
minimum: 1,
|
|
293
|
+
}),
|
|
250
294
|
}),
|
|
251
295
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
252
296
|
return toolkit.teamFund(String(params.teamId ?? ""), Number(params.amountCents));
|
|
@@ -259,7 +303,9 @@ function dominusNodeExtension(pi) {
|
|
|
259
303
|
description: "Generate a new API key scoped to a team. Traffic through this key bills to the team wallet. The key is shown only once.",
|
|
260
304
|
parameters: typebox_1.Type.Object({
|
|
261
305
|
teamId: typebox_1.Type.String({ description: "UUID of the team" }),
|
|
262
|
-
label: typebox_1.Type.String({
|
|
306
|
+
label: typebox_1.Type.String({
|
|
307
|
+
description: "Label for the API key (e.g. 'research-agent')",
|
|
308
|
+
}),
|
|
263
309
|
}),
|
|
264
310
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
265
311
|
return toolkit.teamCreateApiKey(String(params.teamId ?? ""), String(params.label ?? ""));
|
|
@@ -272,7 +318,11 @@ function dominusNodeExtension(pi) {
|
|
|
272
318
|
description: "Get bandwidth usage statistics for a team over the past N days.",
|
|
273
319
|
parameters: typebox_1.Type.Object({
|
|
274
320
|
teamId: typebox_1.Type.String({ description: "UUID of the team" }),
|
|
275
|
-
days: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
321
|
+
days: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
322
|
+
description: "Number of days to look back (default: 30, max: 365)",
|
|
323
|
+
minimum: 1,
|
|
324
|
+
maximum: 365,
|
|
325
|
+
})),
|
|
276
326
|
}),
|
|
277
327
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
278
328
|
return toolkit.teamUsage(String(params.teamId ?? ""), params.days !== undefined ? Number(params.days) : 30);
|
|
@@ -286,7 +336,11 @@ function dominusNodeExtension(pi) {
|
|
|
286
336
|
parameters: typebox_1.Type.Object({
|
|
287
337
|
teamId: typebox_1.Type.String({ description: "UUID of the team" }),
|
|
288
338
|
name: typebox_1.Type.Optional(typebox_1.Type.String({ description: "New team name" })),
|
|
289
|
-
maxMembers: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
339
|
+
maxMembers: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
340
|
+
description: "New maximum member count (1–100)",
|
|
341
|
+
minimum: 1,
|
|
342
|
+
maximum: 100,
|
|
343
|
+
})),
|
|
290
344
|
}),
|
|
291
345
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
292
346
|
return toolkit.updateTeam(String(params.teamId ?? ""), params.name !== undefined ? String(params.name) : undefined, params.maxMembers !== undefined ? Number(params.maxMembers) : undefined);
|
|
@@ -300,7 +354,9 @@ function dominusNodeExtension(pi) {
|
|
|
300
354
|
parameters: typebox_1.Type.Object({
|
|
301
355
|
teamId: typebox_1.Type.String({ description: "UUID of the team" }),
|
|
302
356
|
userId: typebox_1.Type.String({ description: "UUID of the user to update" }),
|
|
303
|
-
role: typebox_1.Type.Union([typebox_1.Type.Literal("admin"), typebox_1.Type.Literal("member")], {
|
|
357
|
+
role: typebox_1.Type.Union([typebox_1.Type.Literal("admin"), typebox_1.Type.Literal("member")], {
|
|
358
|
+
description: "New role: 'admin' or 'member'",
|
|
359
|
+
}),
|
|
304
360
|
}),
|
|
305
361
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
306
362
|
return toolkit.updateTeamMemberRole(String(params.teamId ?? ""), String(params.userId ?? ""), String(params.role ?? ""));
|
|
@@ -312,7 +368,11 @@ function dominusNodeExtension(pi) {
|
|
|
312
368
|
label: "DominusNode: Top Up Wallet via PayPal",
|
|
313
369
|
description: "Create a PayPal checkout session to add funds to the Dominus Node wallet. Returns a payment URL to redirect the user to.",
|
|
314
370
|
parameters: typebox_1.Type.Object({
|
|
315
|
-
amountCents: typebox_1.Type.Number({
|
|
371
|
+
amountCents: typebox_1.Type.Number({
|
|
372
|
+
description: "Amount to add in cents (min: 500 = $5.00, max: 1,000,000 = $10,000.00)",
|
|
373
|
+
minimum: 500,
|
|
374
|
+
maximum: 1000000,
|
|
375
|
+
}),
|
|
316
376
|
}),
|
|
317
377
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
318
378
|
return toolkit.topupPaypal(Number(params.amountCents));
|
|
@@ -324,7 +384,11 @@ function dominusNodeExtension(pi) {
|
|
|
324
384
|
label: "DominusNode: Top Up Wallet via Stripe",
|
|
325
385
|
description: "Create a Stripe checkout session to add funds to the Dominus Node wallet. Supports cards and Link. Returns a payment URL.",
|
|
326
386
|
parameters: typebox_1.Type.Object({
|
|
327
|
-
amountCents: typebox_1.Type.Number({
|
|
387
|
+
amountCents: typebox_1.Type.Number({
|
|
388
|
+
description: "Amount to add in cents (min: 500 = $5.00, max: 1,000,000 = $10,000.00)",
|
|
389
|
+
minimum: 500,
|
|
390
|
+
maximum: 1000000,
|
|
391
|
+
}),
|
|
328
392
|
}),
|
|
329
393
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
330
394
|
return toolkit.topupStripe(Number(params.amountCents));
|
|
@@ -338,8 +402,14 @@ function dominusNodeExtension(pi) {
|
|
|
338
402
|
"Supported currencies: BTC, ETH, LTC, XMR, ZEC, USDC, SOL, USDT, DAI, BNB, LINK. " +
|
|
339
403
|
"Returns a payment address and invoice details.",
|
|
340
404
|
parameters: typebox_1.Type.Object({
|
|
341
|
-
amountUsd: typebox_1.Type.Number({
|
|
342
|
-
|
|
405
|
+
amountUsd: typebox_1.Type.Number({
|
|
406
|
+
description: "Amount in USD (min: $5, max: $10,000)",
|
|
407
|
+
minimum: 5,
|
|
408
|
+
maximum: 10000,
|
|
409
|
+
}),
|
|
410
|
+
currency: typebox_1.Type.String({
|
|
411
|
+
description: "Crypto currency code: BTC, ETH, LTC, XMR, ZEC, USDC, SOL, USDT, DAI, BNB, or LINK",
|
|
412
|
+
}),
|
|
343
413
|
}),
|
|
344
414
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
345
415
|
return toolkit.topupCrypto(Number(params.amountUsd), String(params.currency ?? ""));
|
|
@@ -363,11 +433,21 @@ function dominusNodeExtension(pi) {
|
|
|
363
433
|
description: "Update spending policy for an agentic sub-wallet: set a daily spending limit or restrict it to allowed domains.",
|
|
364
434
|
parameters: typebox_1.Type.Object({
|
|
365
435
|
walletId: typebox_1.Type.String({ description: "UUID of the agentic wallet" }),
|
|
366
|
-
dailyLimitCents: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
367
|
-
|
|
436
|
+
dailyLimitCents: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
437
|
+
description: "Daily spending limit in cents (0 = no limit)",
|
|
438
|
+
minimum: 0,
|
|
439
|
+
maximum: 1000000,
|
|
440
|
+
})),
|
|
441
|
+
allowedDomains: typebox_1.Type.Optional(typebox_1.Type.Array(typebox_1.Type.String(), {
|
|
442
|
+
description: "List of domains this wallet is permitted to make requests to (e.g. ['example.com', 'api.service.io'])",
|
|
443
|
+
})),
|
|
368
444
|
}),
|
|
369
445
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
370
|
-
return toolkit.updateWalletPolicy(String(params.walletId ?? ""), params.dailyLimitCents !== undefined
|
|
446
|
+
return toolkit.updateWalletPolicy(String(params.walletId ?? ""), params.dailyLimitCents !== undefined
|
|
447
|
+
? Number(params.dailyLimitCents)
|
|
448
|
+
: undefined, params.allowedDomains !== undefined
|
|
449
|
+
? params.allowedDomains
|
|
450
|
+
: undefined);
|
|
371
451
|
},
|
|
372
452
|
});
|
|
373
453
|
// ── Tool 27: get_proxy_status ───────────────────────────────────────────
|
|
@@ -386,7 +466,11 @@ function dominusNodeExtension(pi) {
|
|
|
386
466
|
label: "DominusNode: Get Wallet Transactions",
|
|
387
467
|
description: "Get wallet transaction history showing top-ups, charges, and refunds.",
|
|
388
468
|
parameters: typebox_1.Type.Object({
|
|
389
|
-
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
469
|
+
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
470
|
+
description: "Number of transactions to return (default: 20, max: 100)",
|
|
471
|
+
minimum: 1,
|
|
472
|
+
maximum: 100,
|
|
473
|
+
})),
|
|
390
474
|
}),
|
|
391
475
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
392
476
|
return toolkit.getTransactions(params.limit !== undefined ? Number(params.limit) : 20);
|
|
@@ -410,7 +494,9 @@ function dominusNodeExtension(pi) {
|
|
|
410
494
|
description: "Check the status of a crypto top-up payment by invoice ID. " +
|
|
411
495
|
"Returns payment status (pending, confirming, completed, expired).",
|
|
412
496
|
parameters: typebox_1.Type.Object({
|
|
413
|
-
invoiceId: typebox_1.Type.String({
|
|
497
|
+
invoiceId: typebox_1.Type.String({
|
|
498
|
+
description: "Crypto invoice ID (UUID) returned from topup_crypto",
|
|
499
|
+
}),
|
|
414
500
|
}),
|
|
415
501
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
416
502
|
return toolkit.checkPayment(String(params.invoiceId ?? ""));
|
|
@@ -423,7 +509,11 @@ function dominusNodeExtension(pi) {
|
|
|
423
509
|
description: "Get daily bandwidth usage breakdown for the specified number of days. " +
|
|
424
510
|
"Returns per-day bytes transferred and cost.",
|
|
425
511
|
parameters: typebox_1.Type.Object({
|
|
426
|
-
days: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
512
|
+
days: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
513
|
+
description: "Number of days to look back (default: 7, max: 365)",
|
|
514
|
+
minimum: 1,
|
|
515
|
+
maximum: 365,
|
|
516
|
+
})),
|
|
427
517
|
}),
|
|
428
518
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
429
519
|
return toolkit.getDailyUsage(params.days !== undefined ? Number(params.days) : 7);
|
|
@@ -435,7 +525,11 @@ function dominusNodeExtension(pi) {
|
|
|
435
525
|
label: "DominusNode: Get Top Hosts by Usage",
|
|
436
526
|
description: "Get the top hosts by bandwidth usage. Shows which domains consume the most proxy traffic.",
|
|
437
527
|
parameters: typebox_1.Type.Object({
|
|
438
|
-
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
528
|
+
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
529
|
+
description: "Number of top hosts to return (default: 10, max: 100)",
|
|
530
|
+
minimum: 1,
|
|
531
|
+
maximum: 100,
|
|
532
|
+
})),
|
|
439
533
|
}),
|
|
440
534
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
441
535
|
return toolkit.getTopHosts(params.limit !== undefined ? Number(params.limit) : 10);
|
|
@@ -486,7 +580,9 @@ function dominusNodeExtension(pi) {
|
|
|
486
580
|
description: "Verify an email address using the verification token sent to the user's email. " +
|
|
487
581
|
"Does not require authentication.",
|
|
488
582
|
parameters: typebox_1.Type.Object({
|
|
489
|
-
token: typebox_1.Type.String({
|
|
583
|
+
token: typebox_1.Type.String({
|
|
584
|
+
description: "Email verification token from the verification email",
|
|
585
|
+
}),
|
|
490
586
|
}),
|
|
491
587
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
492
588
|
return toolkit.verifyEmail(String(params.token ?? ""));
|
|
@@ -509,7 +605,9 @@ function dominusNodeExtension(pi) {
|
|
|
509
605
|
description: "Change your account password. Requires current password for verification.",
|
|
510
606
|
parameters: typebox_1.Type.Object({
|
|
511
607
|
currentPassword: typebox_1.Type.String({ description: "Current account password" }),
|
|
512
|
-
newPassword: typebox_1.Type.String({
|
|
608
|
+
newPassword: typebox_1.Type.String({
|
|
609
|
+
description: "New password (8-128 characters)",
|
|
610
|
+
}),
|
|
513
611
|
}),
|
|
514
612
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
515
613
|
return toolkit.updatePassword(String(params.currentPassword ?? ""), String(params.newPassword ?? ""));
|
|
@@ -532,7 +630,9 @@ function dominusNodeExtension(pi) {
|
|
|
532
630
|
description: "Create a new personal API key. The key is shown only once -- save it immediately. " +
|
|
533
631
|
"Usage is billed against your personal wallet.",
|
|
534
632
|
parameters: typebox_1.Type.Object({
|
|
535
|
-
label: typebox_1.Type.String({
|
|
633
|
+
label: typebox_1.Type.String({
|
|
634
|
+
description: "Label for the API key (e.g. 'production', 'dev-testing')",
|
|
635
|
+
}),
|
|
536
636
|
}),
|
|
537
637
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
538
638
|
return toolkit.createKey(String(params.label ?? ""));
|
|
@@ -643,7 +743,9 @@ function dominusNodeExtension(pi) {
|
|
|
643
743
|
parameters: typebox_1.Type.Object({
|
|
644
744
|
teamId: typebox_1.Type.String({ description: "Team ID (UUID)" }),
|
|
645
745
|
userId: typebox_1.Type.String({ description: "User ID (UUID) of the user to add" }),
|
|
646
|
-
role: typebox_1.Type.Optional(typebox_1.Type.Union([typebox_1.Type.Literal("member"), typebox_1.Type.Literal("admin")], {
|
|
746
|
+
role: typebox_1.Type.Optional(typebox_1.Type.Union([typebox_1.Type.Literal("member"), typebox_1.Type.Literal("admin")], {
|
|
747
|
+
description: "Role for the new member (default: 'member')",
|
|
748
|
+
})),
|
|
647
749
|
}),
|
|
648
750
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
649
751
|
return toolkit.teamAddMember(String(params.teamId ?? ""), String(params.userId ?? ""), params.role !== undefined ? String(params.role) : "member");
|
|
@@ -656,7 +758,9 @@ function dominusNodeExtension(pi) {
|
|
|
656
758
|
description: "Remove a member from a team. Only owners and admins can remove members.",
|
|
657
759
|
parameters: typebox_1.Type.Object({
|
|
658
760
|
teamId: typebox_1.Type.String({ description: "Team ID (UUID)" }),
|
|
659
|
-
userId: typebox_1.Type.String({
|
|
761
|
+
userId: typebox_1.Type.String({
|
|
762
|
+
description: "User ID (UUID) of the member to remove",
|
|
763
|
+
}),
|
|
660
764
|
}),
|
|
661
765
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
662
766
|
return toolkit.teamRemoveMember(String(params.teamId ?? ""), String(params.userId ?? ""));
|
|
@@ -669,8 +773,12 @@ function dominusNodeExtension(pi) {
|
|
|
669
773
|
description: "Invite a user to join a team by email address. The user will receive an invitation email.",
|
|
670
774
|
parameters: typebox_1.Type.Object({
|
|
671
775
|
teamId: typebox_1.Type.String({ description: "Team ID (UUID)" }),
|
|
672
|
-
email: typebox_1.Type.String({
|
|
673
|
-
|
|
776
|
+
email: typebox_1.Type.String({
|
|
777
|
+
description: "Email address of the user to invite",
|
|
778
|
+
}),
|
|
779
|
+
role: typebox_1.Type.Optional(typebox_1.Type.Union([typebox_1.Type.Literal("member"), typebox_1.Type.Literal("admin")], {
|
|
780
|
+
description: "Role for the invited member (default: 'member')",
|
|
781
|
+
})),
|
|
674
782
|
}),
|
|
675
783
|
async execute(_id, params, _signal, _onUpdate, _ctx) {
|
|
676
784
|
return toolkit.teamInviteMember(String(params.teamId ?? ""), String(params.email ?? ""), params.role !== undefined ? String(params.role) : "member");
|
package/dist/toolkit.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ export declare class DominusNodeToolkit {
|
|
|
64
64
|
private tokenExpiresAt;
|
|
65
65
|
private _authPromise;
|
|
66
66
|
constructor(options?: DominusNodeToolkitOptions);
|
|
67
|
+
private static _countLeadingZeroBits;
|
|
68
|
+
private _solvePoW;
|
|
67
69
|
private _authenticate;
|
|
68
70
|
private _ensureAuth;
|
|
69
71
|
private _apiRequest;
|
|
@@ -125,4 +127,8 @@ export declare class DominusNodeToolkit {
|
|
|
125
127
|
teamInviteMember(teamId: string, email: string, role?: string): Promise<PiToolResult>;
|
|
126
128
|
teamListInvites(teamId: string): Promise<PiToolResult>;
|
|
127
129
|
teamCancelInvite(teamId: string, inviteId: string): Promise<PiToolResult>;
|
|
130
|
+
mppInfo(): Promise<PiToolResult>;
|
|
131
|
+
payMpp(amountCents: number, method: string): Promise<PiToolResult>;
|
|
132
|
+
mppSessionOpen(maxDepositCents: number, method: string, poolType?: string): Promise<PiToolResult>;
|
|
133
|
+
mppSessionClose(channelId: string): Promise<PiToolResult>;
|
|
128
134
|
}
|