@antseed/cli 0.1.81 → 0.1.83
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/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
|
@@ -2,26 +2,27 @@ import chalk from 'chalk';
|
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import { writeFile, unlink } from 'node:fs/promises';
|
|
4
4
|
import { join, resolve, isAbsolute, dirname } from 'node:path';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { getGlobalOptions } from '../types.js';
|
|
6
|
+
import { loadConfig } from '../../../config/loader.js';
|
|
7
|
+
import { AntseedNode, resolveChainConfig, loadOrCreateIdentity } from '@antseed/node';
|
|
8
|
+
import { checkSellerReadiness } from '@antseed/node/payments';
|
|
9
|
+
import { createIdentityClient, createStakingClient, } from '../../payment-utils.js';
|
|
9
10
|
import { parseBootstrapList, toBootstrapConfig } from '@antseed/node/discovery';
|
|
10
|
-
import { setupShutdownHandler } from '
|
|
11
|
-
import { loadProviderPlugin, buildPluginConfig, getPackageVersions } from '
|
|
12
|
-
import { resolveEffectiveSellerConfig } from '
|
|
11
|
+
import { setupShutdownHandler } from '../../shutdown.js';
|
|
12
|
+
import { loadProviderPlugin, buildPluginConfig, getPackageVersions } from '../../../plugins/loader.js';
|
|
13
|
+
import { resolveEffectiveSellerConfig } from '../../../config/effective.js';
|
|
13
14
|
import { AntAgentProvider, loadAntAgent } from '@antseed/ant-agent';
|
|
15
|
+
import { resolvePluginPackage } from '../../../plugins/registry.js';
|
|
14
16
|
function getStateFile(dataDir) {
|
|
15
17
|
return join(dataDir, 'daemon.state.json');
|
|
16
18
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return env;
|
|
19
|
+
export function selectSellerProviderNames(sellerConfig, rawNames) {
|
|
20
|
+
const configured = Object.keys(sellerConfig.providers);
|
|
21
|
+
const selected = typeof rawNames === 'string' && rawNames.trim().length > 0
|
|
22
|
+
? rawNames.split(',').map((name) => name.trim()).filter((name) => name.length > 0)
|
|
23
|
+
: configured;
|
|
24
|
+
const unknown = selected.filter((name) => !sellerConfig.providers[name]);
|
|
25
|
+
return { selected, unknown };
|
|
25
26
|
}
|
|
26
27
|
function parseOptionalBoolEnv(value) {
|
|
27
28
|
if (value === undefined)
|
|
@@ -33,6 +34,80 @@ function parseOptionalBoolEnv(value) {
|
|
|
33
34
|
return false;
|
|
34
35
|
return null;
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Gate `antseed seller start` on required prerequisites:
|
|
39
|
+
* 1. At least one service is configured for the selected provider.
|
|
40
|
+
* 2. (When payments are enabled) seller is registered on-chain and staked.
|
|
41
|
+
* Runtime pricing overrides that would be silently ignored (because the
|
|
42
|
+
* providers map is empty) are also flagged as a hard error here.
|
|
43
|
+
*
|
|
44
|
+
* On failure: print a clear list of what's missing with the exact command(s)
|
|
45
|
+
* to fix each one, then throw. Callers should catch and `process.exit(1)`.
|
|
46
|
+
*/
|
|
47
|
+
export async function assertSellerPrerequisites(input) {
|
|
48
|
+
const { dataDir, config, effectiveSeller, providerNames, paymentsEnabled, runtimePricingOverride, skipChainChecks, } = input;
|
|
49
|
+
const failures = [];
|
|
50
|
+
// 1. Provider has at least one service configured.
|
|
51
|
+
for (const providerName of providerNames) {
|
|
52
|
+
const providerCfg = effectiveSeller.providers[providerName];
|
|
53
|
+
const serviceCount = providerCfg ? Object.keys(providerCfg.services).length : 0;
|
|
54
|
+
if (serviceCount === 0) {
|
|
55
|
+
failures.push({
|
|
56
|
+
title: `No services configured for provider "${providerName}"`,
|
|
57
|
+
detail: 'A seller must announce at least one service. Add one with:',
|
|
58
|
+
command: `antseed config seller add-service ${providerName} <serviceId> --input <usd> --output <usd>`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// 2. Runtime pricing override was supplied but would silently no-op because
|
|
63
|
+
// no providers are configured. This is the Greptile P2 flag from PR #275.
|
|
64
|
+
if (runtimePricingOverride && Object.keys(effectiveSeller.providers).length === 0) {
|
|
65
|
+
failures.push({
|
|
66
|
+
title: 'Pricing override has nothing to apply to',
|
|
67
|
+
detail: `--input-usd-per-million / --output-usd-per-million (or ANTSEED_SELLER_*_USD_PER_MILLION env) were supplied, but no providers are configured in seller.providers. The override would silently no-op.`,
|
|
68
|
+
command: `antseed config seller add-service ${providerNames[0] ?? '<provider>'} <serviceId> --input <usd> --output <usd>`,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// 3. On-chain readiness — only when payments are actually on.
|
|
72
|
+
if (paymentsEnabled && config.payments.crypto && !skipChainChecks) {
|
|
73
|
+
try {
|
|
74
|
+
const identity = await loadOrCreateIdentity(dataDir);
|
|
75
|
+
const identityClient = createIdentityClient(config);
|
|
76
|
+
const stakingClient = createStakingClient(config);
|
|
77
|
+
const checks = await checkSellerReadiness(identity, identityClient, stakingClient);
|
|
78
|
+
for (const check of checks) {
|
|
79
|
+
if (!check.passed) {
|
|
80
|
+
failures.push({
|
|
81
|
+
title: check.name,
|
|
82
|
+
detail: check.message,
|
|
83
|
+
command: check.command,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
// If we can't even reach the chain, surface the error rather than
|
|
90
|
+
// silently skipping — that's what broke testnet-together earlier today.
|
|
91
|
+
failures.push({
|
|
92
|
+
title: 'On-chain readiness check failed',
|
|
93
|
+
detail: `Could not query the configured chain (${err.message}). Set payments.crypto.rpcUrl or pass --skip-prereq-check to bypass.`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (failures.length === 0)
|
|
98
|
+
return;
|
|
99
|
+
console.error(chalk.red('\nCannot start seller node — prerequisites not met:\n'));
|
|
100
|
+
for (const f of failures) {
|
|
101
|
+
console.error(` ${chalk.red('✗')} ${chalk.bold(f.title)}`);
|
|
102
|
+
console.error(` ${chalk.dim(f.detail)}`);
|
|
103
|
+
if (f.command) {
|
|
104
|
+
console.error(` ${chalk.cyan(f.command)}`);
|
|
105
|
+
}
|
|
106
|
+
console.error('');
|
|
107
|
+
}
|
|
108
|
+
console.error(chalk.dim('Run `antseed seller setup` for a guided walkthrough, or pass --skip-prereq-check to bypass all checks (not recommended).'));
|
|
109
|
+
throw new Error('seller prerequisites not met');
|
|
110
|
+
}
|
|
36
111
|
async function isRpcReachable(rpcUrl, timeoutMs = 1500) {
|
|
37
112
|
const controller = new AbortController();
|
|
38
113
|
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
@@ -81,22 +156,54 @@ export function buildSellerRuntimeOverridesFromFlags(options) {
|
|
|
81
156
|
}
|
|
82
157
|
return overrides;
|
|
83
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Translate the unified `seller.providers[name]` block into the flat
|
|
161
|
+
* `ANTSEED_*` env keys that provider plugins consume. Plugins continue to
|
|
162
|
+
* receive the same shape they always have — the CLI just produces it from
|
|
163
|
+
* config.json instead of having users set env vars by hand.
|
|
164
|
+
*/
|
|
84
165
|
export function buildSellerPluginRuntimeEnv(sellerConfig, providerName) {
|
|
85
|
-
const
|
|
86
|
-
const servicePricing = providerPricing?.services;
|
|
87
|
-
const serviceCategories = sellerConfig.serviceCategories?.[providerName];
|
|
166
|
+
const providerCfg = sellerConfig.providers?.[providerName];
|
|
88
167
|
const runtimeEnv = {
|
|
89
168
|
ANTSEED_MAX_CONCURRENCY: String(sellerConfig.maxConcurrentBuyers),
|
|
90
169
|
};
|
|
91
|
-
if (
|
|
92
|
-
runtimeEnv
|
|
93
|
-
runtimeEnv['ANTSEED_OUTPUT_USD_PER_MILLION'] = String(providerPricing.defaults.outputUsdPerMillion);
|
|
170
|
+
if (!providerCfg) {
|
|
171
|
+
return runtimeEnv;
|
|
94
172
|
}
|
|
95
|
-
if (
|
|
173
|
+
if (providerCfg.defaults) {
|
|
174
|
+
runtimeEnv['ANTSEED_INPUT_USD_PER_MILLION'] = String(providerCfg.defaults.inputUsdPerMillion);
|
|
175
|
+
runtimeEnv['ANTSEED_OUTPUT_USD_PER_MILLION'] = String(providerCfg.defaults.outputUsdPerMillion);
|
|
176
|
+
if (providerCfg.defaults.cachedInputUsdPerMillion != null) {
|
|
177
|
+
runtimeEnv['ANTSEED_CACHED_INPUT_USD_PER_MILLION'] = String(providerCfg.defaults.cachedInputUsdPerMillion);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const serviceIds = Object.keys(providerCfg.services);
|
|
181
|
+
if (serviceIds.length > 0) {
|
|
182
|
+
runtimeEnv['ANTSEED_ALLOWED_SERVICES'] = serviceIds.join(',');
|
|
183
|
+
}
|
|
184
|
+
// Per-service pricing: { serviceId -> TokenPricingUsdPerMillion }
|
|
185
|
+
// Note: categories are NOT emitted as an env var. No plugin reads
|
|
186
|
+
// ANTSEED_SERVICE_CATEGORIES_JSON — the CLI writes them directly onto
|
|
187
|
+
// `provider.serviceCategories` in seed.ts below. Keeping categories out of
|
|
188
|
+
// the plugin env avoids dead noise in process.env.
|
|
189
|
+
const servicePricing = {};
|
|
190
|
+
const serviceAliasMap = {};
|
|
191
|
+
for (const [serviceId, serviceCfg] of Object.entries(providerCfg.services)) {
|
|
192
|
+
if (serviceCfg.pricing) {
|
|
193
|
+
servicePricing[serviceId] = serviceCfg.pricing;
|
|
194
|
+
}
|
|
195
|
+
if (serviceCfg.upstreamModel && serviceCfg.upstreamModel !== serviceId) {
|
|
196
|
+
serviceAliasMap[serviceId] = serviceCfg.upstreamModel;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (Object.keys(servicePricing).length > 0) {
|
|
96
200
|
runtimeEnv['ANTSEED_SERVICE_PRICING_JSON'] = JSON.stringify(servicePricing);
|
|
97
201
|
}
|
|
98
|
-
if (
|
|
99
|
-
runtimeEnv['
|
|
202
|
+
if (Object.keys(serviceAliasMap).length > 0) {
|
|
203
|
+
runtimeEnv['ANTSEED_SERVICE_ALIAS_MAP_JSON'] = JSON.stringify(serviceAliasMap);
|
|
204
|
+
}
|
|
205
|
+
if (providerCfg.baseUrl) {
|
|
206
|
+
runtimeEnv['OPENAI_BASE_URL'] = providerCfg.baseUrl;
|
|
100
207
|
}
|
|
101
208
|
return runtimeEnv;
|
|
102
209
|
}
|
|
@@ -115,46 +222,19 @@ export function mergeSellerRuntimeEnv(baseConfig, runtimeEnv, options) {
|
|
|
115
222
|
}
|
|
116
223
|
return merged;
|
|
117
224
|
}
|
|
118
|
-
function
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
const parsed = JSON.parse(raw);
|
|
124
|
-
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
125
|
-
return undefined;
|
|
126
|
-
}
|
|
127
|
-
const out = {};
|
|
128
|
-
for (const [service, categoriesRaw] of Object.entries(parsed)) {
|
|
129
|
-
if (!Array.isArray(categoriesRaw))
|
|
130
|
-
continue;
|
|
131
|
-
const categories = Array.from(new Set(categoriesRaw
|
|
132
|
-
.filter((entry) => typeof entry === 'string')
|
|
133
|
-
.map((entry) => entry.trim().toLowerCase())
|
|
134
|
-
.filter((entry) => entry.length > 0)));
|
|
135
|
-
if (categories.length > 0) {
|
|
136
|
-
out[service] = categories;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return Object.keys(out).length > 0 ? out : undefined;
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
return undefined;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
export function registerSeedCommand(program) {
|
|
146
|
-
program
|
|
147
|
-
.command('seed')
|
|
225
|
+
export function registerSellerStartCommand(sellerCmd) {
|
|
226
|
+
sellerCmd
|
|
227
|
+
.command('start')
|
|
148
228
|
.description('Start providing AI services on the P2P network')
|
|
149
|
-
.option('--provider <
|
|
150
|
-
.option('--instance <id>', 'use a configured plugin instance by ID')
|
|
229
|
+
.option('--provider <names>', 'start only these providers (comma-separated, default: all configured)')
|
|
151
230
|
.option('-r, --reserve <number>', 'runtime-only reserve floor override (does not write config file)', parseFloat)
|
|
152
231
|
.option('--input-usd-per-million <number>', 'runtime-only input pricing override in USD per 1M tokens', parseFloat)
|
|
153
232
|
.option('--output-usd-per-million <number>', 'runtime-only output pricing override in USD per 1M tokens', parseFloat)
|
|
154
233
|
.option('--dht-port <number>', 'UDP port for DHT (default: 6881)', parseInt)
|
|
155
234
|
.option('--signaling-port <number>', 'TCP port for P2P signaling (default: 6882)', parseInt)
|
|
235
|
+
.option('--skip-prereq-check', 'skip pre-flight checks (services configured, on-chain registration + stake). Use only for local testing.')
|
|
156
236
|
.action(async (options) => {
|
|
157
|
-
const globalOpts = getGlobalOptions(
|
|
237
|
+
const globalOpts = getGlobalOptions(sellerCmd);
|
|
158
238
|
const config = await loadConfig(globalOpts.config);
|
|
159
239
|
const runtimeOverrides = buildSellerRuntimeOverridesFromFlags({
|
|
160
240
|
reserve: options.reserve,
|
|
@@ -167,62 +247,43 @@ export function registerSeedCommand(program) {
|
|
|
167
247
|
config,
|
|
168
248
|
sellerOverrides: runtimeOverrides,
|
|
169
249
|
});
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
if (instance.type !== 'provider') {
|
|
179
|
-
console.error(chalk.red(`Instance "${options.instance}" is a ${instance.type}, not a provider.`));
|
|
180
|
-
process.exit(1);
|
|
181
|
-
}
|
|
182
|
-
const spinner = ora(`Loading provider plugin "${instance.package}"...`).start();
|
|
183
|
-
try {
|
|
184
|
-
const plugin = await loadProviderPlugin(instance.package);
|
|
185
|
-
const runtimeEnv = buildSellerPluginRuntimeEnv(effectiveSellerConfig, plugin.name);
|
|
186
|
-
const basePluginConfig = buildPluginConfig(plugin.configSchema ?? plugin.configKeys ?? [], undefined, instance.config);
|
|
187
|
-
const pluginConfig = mergeSellerRuntimeEnv(basePluginConfig, runtimeEnv, { forcePricingOverride });
|
|
188
|
-
provider = await plugin.createProvider(pluginConfig);
|
|
189
|
-
if (provider.init) {
|
|
190
|
-
spinner.text = 'Validating credentials...';
|
|
191
|
-
await provider.init();
|
|
192
|
-
}
|
|
193
|
-
spinner.succeed(chalk.green(`Provider "${plugin.displayName}" loaded`));
|
|
194
|
-
}
|
|
195
|
-
catch (err) {
|
|
196
|
-
spinner.fail(chalk.red(`Failed to load provider: ${err.message}`));
|
|
197
|
-
process.exit(1);
|
|
198
|
-
}
|
|
250
|
+
const configuredProviderNames = Object.keys(effectiveSellerConfig.providers);
|
|
251
|
+
const providerSelection = selectSellerProviderNames(effectiveSellerConfig, options.provider);
|
|
252
|
+
const selectedProviderNames = providerSelection.selected;
|
|
253
|
+
if (selectedProviderNames.length === 0) {
|
|
254
|
+
console.error(chalk.red('Error: No seller providers are configured.'));
|
|
255
|
+
console.error(chalk.dim('Run: antseed seller setup or antseed config seller add-provider <name> --plugin <plugin>'));
|
|
256
|
+
process.exit(1);
|
|
199
257
|
}
|
|
200
|
-
|
|
201
|
-
|
|
258
|
+
const unknownProviderNames = providerSelection.unknown;
|
|
259
|
+
if (unknownProviderNames.length > 0) {
|
|
260
|
+
console.error(chalk.red(`Unknown provider name(s): ${unknownProviderNames.join(', ')}`));
|
|
261
|
+
console.error(chalk.dim(`Configured providers: ${configuredProviderNames.join(', ') || '(none)'}`));
|
|
262
|
+
process.exit(1);
|
|
263
|
+
}
|
|
264
|
+
const providers = [];
|
|
265
|
+
for (const providerName of selectedProviderNames) {
|
|
266
|
+
const providerCfg = effectiveSellerConfig.providers[providerName];
|
|
267
|
+
const packageName = resolvePluginPackage(providerCfg.plugin);
|
|
268
|
+
const spinner = ora(`Loading provider plugin "${packageName}" for "${providerName}"...`).start();
|
|
202
269
|
try {
|
|
203
|
-
const plugin = await loadProviderPlugin(
|
|
204
|
-
const
|
|
205
|
-
const
|
|
206
|
-
const
|
|
207
|
-
const
|
|
208
|
-
const pluginConfig = mergeSellerRuntimeEnv(envAndFileConfig, runtimeEnv, { forcePricingOverride });
|
|
209
|
-
provider = await plugin.createProvider(pluginConfig);
|
|
270
|
+
const plugin = await loadProviderPlugin(packageName);
|
|
271
|
+
const runtimeEnv = buildSellerPluginRuntimeEnv(effectiveSellerConfig, providerName);
|
|
272
|
+
const basePluginConfig = buildPluginConfig(plugin.configSchema ?? plugin.configKeys ?? []);
|
|
273
|
+
const pluginConfig = mergeSellerRuntimeEnv(basePluginConfig, runtimeEnv, { forcePricingOverride });
|
|
274
|
+
const provider = await plugin.createProvider(pluginConfig);
|
|
210
275
|
if (provider.init) {
|
|
211
|
-
spinner.text =
|
|
276
|
+
spinner.text = `Validating credentials for "${providerName}"...`;
|
|
212
277
|
await provider.init();
|
|
213
278
|
}
|
|
214
|
-
|
|
279
|
+
providers.push(provider);
|
|
280
|
+
spinner.succeed(chalk.green(`Provider "${providerName}" loaded via ${packageName}`));
|
|
215
281
|
}
|
|
216
282
|
catch (err) {
|
|
217
|
-
spinner.fail(chalk.red(`Failed to load provider: ${err.message}`));
|
|
283
|
+
spinner.fail(chalk.red(`Failed to load provider "${providerName}": ${err.message}`));
|
|
218
284
|
process.exit(1);
|
|
219
285
|
}
|
|
220
286
|
}
|
|
221
|
-
else {
|
|
222
|
-
console.error(chalk.red('Error: No provider specified.'));
|
|
223
|
-
console.error(chalk.dim('Run: antseed seed --provider <name> or antseed seed --instance <id>'));
|
|
224
|
-
process.exit(1);
|
|
225
|
-
}
|
|
226
287
|
const bootstrapNodes = config.network.bootstrapNodes.length > 0
|
|
227
288
|
? toBootstrapConfig(parseBootstrapList(config.network.bootstrapNodes))
|
|
228
289
|
: undefined;
|
|
@@ -265,20 +326,59 @@ export function registerSeedCommand(program) {
|
|
|
265
326
|
console.log(chalk.dim('Start your chain node or set ANTSEED_ENABLE_SETTLEMENT=true to force-enable payments.'));
|
|
266
327
|
}
|
|
267
328
|
}
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
329
|
+
const primaryProviderName = selectedProviderNames[0] ?? providers[0]?.name ?? 'unknown';
|
|
330
|
+
// Pre-flight: refuse to start if the user hasn't added any services,
|
|
331
|
+
// hasn't registered on-chain, or hasn't staked. A clear error is much
|
|
332
|
+
// better than a seller peer that's online but can't take requests.
|
|
333
|
+
try {
|
|
334
|
+
await assertSellerPrerequisites({
|
|
335
|
+
dataDir: globalOpts.dataDir,
|
|
336
|
+
config,
|
|
337
|
+
effectiveSeller: effectiveSellerConfig,
|
|
338
|
+
providerNames: selectedProviderNames,
|
|
339
|
+
paymentsEnabled,
|
|
340
|
+
runtimePricingOverride: forcePricingOverride,
|
|
341
|
+
skipChainChecks: Boolean(options.skipPrereqCheck),
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
// Write service categories directly from config onto the plugin's
|
|
348
|
+
// Provider object — plugins don't parse this env key themselves.
|
|
349
|
+
for (let index = 0; index < providers.length; index += 1) {
|
|
350
|
+
const provider = providers[index];
|
|
351
|
+
const providerName = selectedProviderNames[index];
|
|
352
|
+
const configProviderCfg = effectiveSellerConfig.providers?.[providerName];
|
|
353
|
+
if (configProviderCfg) {
|
|
354
|
+
const categoriesByService = {};
|
|
355
|
+
for (const [serviceId, svc] of Object.entries(configProviderCfg.services)) {
|
|
356
|
+
if (svc.categories && svc.categories.length > 0) {
|
|
357
|
+
categoriesByService[serviceId] = [...svc.categories];
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
if (Object.keys(categoriesByService).length > 0) {
|
|
361
|
+
provider.serviceCategories = categoriesByService;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
const versionsByPackage = new Map();
|
|
366
|
+
for (const providerName of selectedProviderNames) {
|
|
367
|
+
const providerCfg = effectiveSellerConfig.providers[providerName];
|
|
368
|
+
for (const [pkg, version] of Object.entries(getPackageVersions(providerCfg.plugin))) {
|
|
369
|
+
versionsByPackage.set(pkg, version);
|
|
370
|
+
}
|
|
273
371
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
console.log(chalk.dim(`Package versions: ${Object.entries(versions).map(([k, v]) => `${k}@${v}`).join(', ')}`));
|
|
372
|
+
if (versionsByPackage.size > 0) {
|
|
373
|
+
console.log(chalk.dim(`Package versions: ${Array.from(versionsByPackage.entries()).map(([k, v]) => `${k}@${v}`).join(', ')}`));
|
|
277
374
|
}
|
|
278
375
|
console.log(chalk.bold('Effective seller settings:'));
|
|
279
|
-
console.log(chalk.dim(`
|
|
280
|
-
|
|
281
|
-
|
|
376
|
+
console.log(chalk.dim(` providers: ${selectedProviderNames.join(', ')}`));
|
|
377
|
+
for (let index = 0; index < providers.length; index += 1) {
|
|
378
|
+
const provider = providers[index];
|
|
379
|
+
const providerName = selectedProviderNames[index];
|
|
380
|
+
console.log(chalk.dim(` ${providerName} pricing defaults (USD/1M): input=${provider.pricing.defaults.inputUsdPerMillion}, output=${provider.pricing.defaults.outputUsdPerMillion}`));
|
|
381
|
+
}
|
|
282
382
|
const minBudgetPerRequest = config.payments.minBudgetPerRequest ?? '10000';
|
|
283
383
|
console.log(chalk.dim(` min budget per request: ${minBudgetPerRequest} base units`));
|
|
284
384
|
console.log(chalk.dim(` reserve floor: ${effectiveSellerConfig.reserveFloor}`));
|
|
@@ -316,6 +416,7 @@ export function registerSeedCommand(program) {
|
|
|
316
416
|
} : {}),
|
|
317
417
|
},
|
|
318
418
|
});
|
|
419
|
+
let registeredProviders = providers;
|
|
319
420
|
// Wrap provider with ant agent if configured
|
|
320
421
|
if (effectiveSellerConfig.agentDir) {
|
|
321
422
|
const baseDir = globalOpts.config ? dirname(resolve(globalOpts.config)) : process.cwd();
|
|
@@ -324,7 +425,7 @@ export function registerSeedCommand(program) {
|
|
|
324
425
|
if (typeof effectiveSellerConfig.agentDir === 'string') {
|
|
325
426
|
// Single agent for all services
|
|
326
427
|
const agentDef = await loadAntAgent(resolvePath(effectiveSellerConfig.agentDir));
|
|
327
|
-
|
|
428
|
+
registeredProviders = registeredProviders.map((provider) => new AntAgentProvider(provider, agentDef));
|
|
328
429
|
const k = agentDef.knowledge.length;
|
|
329
430
|
console.log(chalk.dim(` ant agent: "${agentDef.name}" (${k} knowledge module${k !== 1 ? 's' : ''})`));
|
|
330
431
|
}
|
|
@@ -338,7 +439,7 @@ export function registerSeedCommand(program) {
|
|
|
338
439
|
const label = service === '*' ? '(default)' : service;
|
|
339
440
|
console.log(chalk.dim(` ant agent: "${agentDef.name}" → ${label} (${k} knowledge module${k !== 1 ? 's' : ''})`));
|
|
340
441
|
}
|
|
341
|
-
|
|
442
|
+
registeredProviders = registeredProviders.map((provider) => new AntAgentProvider(provider, agentMap));
|
|
342
443
|
}
|
|
343
444
|
}
|
|
344
445
|
catch (err) {
|
|
@@ -346,7 +447,9 @@ export function registerSeedCommand(program) {
|
|
|
346
447
|
process.exit(1);
|
|
347
448
|
}
|
|
348
449
|
}
|
|
349
|
-
|
|
450
|
+
for (const provider of registeredProviders) {
|
|
451
|
+
node.registerProvider(provider);
|
|
452
|
+
}
|
|
350
453
|
try {
|
|
351
454
|
await node.start();
|
|
352
455
|
nodeSpinner.succeed(chalk.green('Seeding active'));
|
|
@@ -376,7 +479,9 @@ export function registerSeedCommand(program) {
|
|
|
376
479
|
}
|
|
377
480
|
function buildDaemonState() {
|
|
378
481
|
const now = Date.now();
|
|
379
|
-
const
|
|
482
|
+
const primaryProvider = registeredProviders[0];
|
|
483
|
+
const capacity = registeredProviders.map((provider) => provider.getCapacity());
|
|
484
|
+
const cap = capacity.reduce((acc, entry) => ({ current: acc.current + entry.current, max: acc.max + entry.max }), { current: 0, max: 0 });
|
|
380
485
|
const trackedSessions = node
|
|
381
486
|
.getActiveSellerSessions()
|
|
382
487
|
.filter((session) => !session.settling)
|
|
@@ -402,7 +507,7 @@ export function registerSeedCommand(program) {
|
|
|
402
507
|
syntheticDetails.push({
|
|
403
508
|
sessionId,
|
|
404
509
|
buyerPeerId: 'unknown',
|
|
405
|
-
provider:
|
|
510
|
+
provider: primaryProviderName,
|
|
406
511
|
startedAt: startedAtTs,
|
|
407
512
|
lastActivityAt: now,
|
|
408
513
|
totalRequests: 0,
|
|
@@ -423,23 +528,24 @@ export function registerSeedCommand(program) {
|
|
|
423
528
|
peerId: node.peerId,
|
|
424
529
|
dhtPort: node.dhtPort,
|
|
425
530
|
signalingPort: node.signalingPort,
|
|
426
|
-
provider:
|
|
427
|
-
defaultInputUsdPerMillion:
|
|
428
|
-
defaultOutputUsdPerMillion:
|
|
429
|
-
providerPricing: {
|
|
430
|
-
[
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
531
|
+
provider: primaryProviderName,
|
|
532
|
+
defaultInputUsdPerMillion: primaryProvider.pricing.defaults.inputUsdPerMillion,
|
|
533
|
+
defaultOutputUsdPerMillion: primaryProvider.pricing.defaults.outputUsdPerMillion,
|
|
534
|
+
providerPricing: Object.fromEntries(registeredProviders.map((provider, index) => {
|
|
535
|
+
const providerName = selectedProviderNames[index];
|
|
536
|
+
return [providerName, {
|
|
537
|
+
defaults: {
|
|
538
|
+
inputUsdPerMillion: provider.pricing.defaults.inputUsdPerMillion,
|
|
539
|
+
outputUsdPerMillion: provider.pricing.defaults.outputUsdPerMillion,
|
|
540
|
+
},
|
|
541
|
+
...(provider.pricing.services ? { services: provider.pricing.services } : {}),
|
|
542
|
+
}];
|
|
543
|
+
})),
|
|
544
|
+
...(primaryProvider.serviceCategories
|
|
439
545
|
? {
|
|
440
546
|
providerServiceCategories: {
|
|
441
|
-
[
|
|
442
|
-
services:
|
|
547
|
+
[primaryProviderName]: {
|
|
548
|
+
services: primaryProvider.serviceCategories,
|
|
443
549
|
},
|
|
444
550
|
},
|
|
445
551
|
}
|
|
@@ -497,4 +603,4 @@ export function registerSeedCommand(program) {
|
|
|
497
603
|
});
|
|
498
604
|
});
|
|
499
605
|
}
|
|
500
|
-
//# sourceMappingURL=
|
|
606
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/cli/commands/seller/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seller/start.test.ts"],"names":[],"mappings":""}
|