@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.
Files changed (236) hide show
  1. package/README.md +93 -77
  2. package/dist/cli/commands/buyer/balance.d.ts +3 -0
  3. package/dist/cli/commands/buyer/balance.d.ts.map +1 -0
  4. package/dist/cli/commands/{balance.js → buyer/balance.js} +5 -6
  5. package/dist/cli/commands/buyer/balance.js.map +1 -0
  6. package/dist/cli/commands/buyer/channels.d.ts +3 -0
  7. package/dist/cli/commands/buyer/channels.d.ts.map +1 -0
  8. package/dist/cli/commands/{channels.js → buyer/channels.js} +9 -17
  9. package/dist/cli/commands/buyer/channels.js.map +1 -0
  10. package/dist/cli/commands/buyer/connection.d.ts +3 -0
  11. package/dist/cli/commands/buyer/connection.d.ts.map +1 -0
  12. package/dist/cli/commands/{connection.js → buyer/connection.js} +5 -5
  13. package/dist/cli/commands/buyer/connection.js.map +1 -0
  14. package/dist/cli/commands/buyer/deposit.d.ts +3 -0
  15. package/dist/cli/commands/buyer/deposit.d.ts.map +1 -0
  16. package/dist/cli/commands/{deposit.js → buyer/deposit.js} +6 -6
  17. package/dist/cli/commands/buyer/deposit.js.map +1 -0
  18. package/dist/cli/commands/buyer/index.d.ts +3 -0
  19. package/dist/cli/commands/buyer/index.d.ts.map +1 -0
  20. package/dist/cli/commands/buyer/index.js +24 -0
  21. package/dist/cli/commands/buyer/index.js.map +1 -0
  22. package/dist/cli/commands/buyer/metering.d.ts +3 -0
  23. package/dist/cli/commands/buyer/metering.d.ts.map +1 -0
  24. package/dist/cli/commands/{metering.js → buyer/metering.js} +7 -10
  25. package/dist/cli/commands/buyer/metering.js.map +1 -0
  26. package/dist/cli/commands/buyer/metering.test.d.ts.map +1 -0
  27. package/dist/cli/commands/buyer/metering.test.js.map +1 -0
  28. package/dist/cli/commands/{connect.d.ts → buyer/start.d.ts} +7 -4
  29. package/dist/cli/commands/buyer/start.d.ts.map +1 -0
  30. package/dist/cli/commands/{connect.js → buyer/start.js} +37 -71
  31. package/dist/cli/commands/buyer/start.js.map +1 -0
  32. package/dist/cli/commands/buyer/start.test.d.ts +2 -0
  33. package/dist/cli/commands/buyer/start.test.d.ts.map +1 -0
  34. package/dist/cli/commands/{connect.test.js → buyer/start.test.js} +12 -8
  35. package/dist/cli/commands/buyer/start.test.js.map +1 -0
  36. package/dist/cli/commands/buyer/status.d.ts +3 -0
  37. package/dist/cli/commands/buyer/status.d.ts.map +1 -0
  38. package/dist/cli/commands/buyer/status.js +70 -0
  39. package/dist/cli/commands/buyer/status.js.map +1 -0
  40. package/dist/cli/commands/buyer/subscribe.d.ts +3 -0
  41. package/dist/cli/commands/buyer/subscribe.d.ts.map +1 -0
  42. package/dist/cli/commands/{subscribe.js → buyer/subscribe.js} +8 -8
  43. package/dist/cli/commands/buyer/subscribe.js.map +1 -0
  44. package/dist/cli/commands/buyer/withdraw.d.ts +3 -0
  45. package/dist/cli/commands/buyer/withdraw.d.ts.map +1 -0
  46. package/dist/cli/commands/{withdraw.js → buyer/withdraw.js} +6 -7
  47. package/dist/cli/commands/buyer/withdraw.js.map +1 -0
  48. package/dist/cli/commands/{config.d.ts → config/index.d.ts} +7 -7
  49. package/dist/cli/commands/config/index.d.ts.map +1 -0
  50. package/dist/cli/commands/config/index.js +357 -0
  51. package/dist/cli/commands/config/index.js.map +1 -0
  52. package/dist/cli/commands/config/index.test.d.ts +2 -0
  53. package/dist/cli/commands/config/index.test.d.ts.map +1 -0
  54. package/dist/cli/commands/config/index.test.js +28 -0
  55. package/dist/cli/commands/config/index.test.js.map +1 -0
  56. package/dist/cli/commands/identity/index.d.ts +3 -0
  57. package/dist/cli/commands/identity/index.d.ts.map +1 -0
  58. package/dist/cli/commands/identity/index.js +6 -0
  59. package/dist/cli/commands/identity/index.js.map +1 -0
  60. package/dist/cli/commands/identity/profile.d.ts.map +1 -0
  61. package/dist/cli/commands/identity/profile.js.map +1 -0
  62. package/dist/cli/commands/network/bootstrap.d.ts +3 -0
  63. package/dist/cli/commands/network/bootstrap.d.ts.map +1 -0
  64. package/dist/cli/commands/{bootstrap.js → network/bootstrap.js} +5 -5
  65. package/dist/cli/commands/network/bootstrap.js.map +1 -0
  66. package/dist/cli/commands/network/browse.d.ts +7 -0
  67. package/dist/cli/commands/network/browse.d.ts.map +1 -0
  68. package/dist/cli/commands/{browse.js → network/browse.js} +6 -6
  69. package/dist/cli/commands/network/browse.js.map +1 -0
  70. package/dist/cli/commands/network/index.d.ts +3 -0
  71. package/dist/cli/commands/network/index.d.ts.map +1 -0
  72. package/dist/cli/commands/network/index.js +10 -0
  73. package/dist/cli/commands/network/index.js.map +1 -0
  74. package/dist/cli/commands/seller/emissions.d.ts +3 -0
  75. package/dist/cli/commands/seller/emissions.d.ts.map +1 -0
  76. package/dist/cli/commands/{emissions.js → seller/emissions.js} +7 -7
  77. package/dist/cli/commands/seller/emissions.js.map +1 -0
  78. package/dist/cli/commands/seller/index.d.ts +3 -0
  79. package/dist/cli/commands/seller/index.d.ts.map +1 -0
  80. package/dist/cli/commands/seller/index.js +18 -0
  81. package/dist/cli/commands/seller/index.js.map +1 -0
  82. package/dist/cli/commands/seller/register.d.ts +3 -0
  83. package/dist/cli/commands/seller/register.d.ts.map +1 -0
  84. package/dist/cli/commands/{register.js → seller/register.js} +6 -6
  85. package/dist/cli/commands/seller/register.js.map +1 -0
  86. package/dist/cli/commands/seller/setup.d.ts +12 -0
  87. package/dist/cli/commands/seller/setup.d.ts.map +1 -0
  88. package/dist/cli/commands/seller/setup.js +175 -0
  89. package/dist/cli/commands/seller/setup.js.map +1 -0
  90. package/dist/cli/commands/seller/setup.test.d.ts +2 -0
  91. package/dist/cli/commands/seller/setup.test.d.ts.map +1 -0
  92. package/dist/cli/commands/seller/setup.test.js +32 -0
  93. package/dist/cli/commands/seller/setup.test.js.map +1 -0
  94. package/dist/cli/commands/seller/stake.d.ts +3 -0
  95. package/dist/cli/commands/seller/stake.d.ts.map +1 -0
  96. package/dist/cli/commands/{stake.js → seller/stake.js} +11 -11
  97. package/dist/cli/commands/seller/stake.js.map +1 -0
  98. package/dist/cli/commands/seller/start.d.ts +44 -0
  99. package/dist/cli/commands/seller/start.d.ts.map +1 -0
  100. package/dist/cli/commands/{seed.js → seller/start.js} +241 -135
  101. package/dist/cli/commands/seller/start.js.map +1 -0
  102. package/dist/cli/commands/seller/start.test.d.ts +2 -0
  103. package/dist/cli/commands/seller/start.test.d.ts.map +1 -0
  104. package/dist/cli/commands/seller/start.test.js +212 -0
  105. package/dist/cli/commands/seller/start.test.js.map +1 -0
  106. package/dist/cli/commands/seller/status.d.ts +3 -0
  107. package/dist/cli/commands/seller/status.d.ts.map +1 -0
  108. package/dist/cli/commands/seller/status.js +72 -0
  109. package/dist/cli/commands/seller/status.js.map +1 -0
  110. package/dist/cli/commands/types.d.ts.map +1 -1
  111. package/dist/cli/commands/types.js +3 -1
  112. package/dist/cli/commands/types.js.map +1 -1
  113. package/dist/cli/commands/types.test.d.ts +2 -0
  114. package/dist/cli/commands/types.test.d.ts.map +1 -0
  115. package/dist/cli/commands/types.test.js +21 -0
  116. package/dist/cli/commands/types.test.js.map +1 -0
  117. package/dist/cli/index.js +11 -42
  118. package/dist/cli/index.js.map +1 -1
  119. package/dist/cli/payment-utils.js +1 -1
  120. package/dist/cli/payment-utils.js.map +1 -1
  121. package/dist/config/defaults.d.ts.map +1 -1
  122. package/dist/config/defaults.js +1 -8
  123. package/dist/config/defaults.js.map +1 -1
  124. package/dist/config/effective.d.ts.map +1 -1
  125. package/dist/config/effective.js +23 -4
  126. package/dist/config/effective.js.map +1 -1
  127. package/dist/config/effective.test.js +24 -5
  128. package/dist/config/effective.test.js.map +1 -1
  129. package/dist/config/loader.d.ts.map +1 -1
  130. package/dist/config/loader.js +64 -95
  131. package/dist/config/loader.js.map +1 -1
  132. package/dist/config/loader.test.js +62 -41
  133. package/dist/config/loader.test.js.map +1 -1
  134. package/dist/config/types.d.ts +35 -49
  135. package/dist/config/types.d.ts.map +1 -1
  136. package/dist/config/validation.d.ts.map +1 -1
  137. package/dist/config/validation.js +51 -35
  138. package/dist/config/validation.js.map +1 -1
  139. package/dist/plugins/loader.js +1 -1
  140. package/dist/plugins/loader.js.map +1 -1
  141. package/dist/plugins/registry.d.ts +1 -0
  142. package/dist/plugins/registry.d.ts.map +1 -1
  143. package/dist/plugins/registry.js +4 -0
  144. package/dist/plugins/registry.js.map +1 -1
  145. package/dist/proxy/buyer-proxy.d.ts +1 -1
  146. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  147. package/dist/proxy/buyer-proxy.js +5 -2
  148. package/dist/proxy/buyer-proxy.js.map +1 -1
  149. package/package.json +8 -8
  150. package/dist/cli/commands/balance.d.ts +0 -3
  151. package/dist/cli/commands/balance.d.ts.map +0 -1
  152. package/dist/cli/commands/balance.js.map +0 -1
  153. package/dist/cli/commands/bootstrap.d.ts +0 -3
  154. package/dist/cli/commands/bootstrap.d.ts.map +0 -1
  155. package/dist/cli/commands/bootstrap.js.map +0 -1
  156. package/dist/cli/commands/browse.d.ts +0 -7
  157. package/dist/cli/commands/browse.d.ts.map +0 -1
  158. package/dist/cli/commands/browse.js.map +0 -1
  159. package/dist/cli/commands/channels.d.ts +0 -3
  160. package/dist/cli/commands/channels.d.ts.map +0 -1
  161. package/dist/cli/commands/channels.js.map +0 -1
  162. package/dist/cli/commands/config.d.ts.map +0 -1
  163. package/dist/cli/commands/config.js +0 -239
  164. package/dist/cli/commands/config.js.map +0 -1
  165. package/dist/cli/commands/connect.d.ts.map +0 -1
  166. package/dist/cli/commands/connect.js.map +0 -1
  167. package/dist/cli/commands/connect.test.d.ts +0 -2
  168. package/dist/cli/commands/connect.test.d.ts.map +0 -1
  169. package/dist/cli/commands/connect.test.js.map +0 -1
  170. package/dist/cli/commands/connection.d.ts +0 -3
  171. package/dist/cli/commands/connection.d.ts.map +0 -1
  172. package/dist/cli/commands/connection.js.map +0 -1
  173. package/dist/cli/commands/deposit.d.ts +0 -3
  174. package/dist/cli/commands/deposit.d.ts.map +0 -1
  175. package/dist/cli/commands/deposit.js.map +0 -1
  176. package/dist/cli/commands/emissions.d.ts +0 -3
  177. package/dist/cli/commands/emissions.d.ts.map +0 -1
  178. package/dist/cli/commands/emissions.js.map +0 -1
  179. package/dist/cli/commands/init.d.ts +0 -3
  180. package/dist/cli/commands/init.d.ts.map +0 -1
  181. package/dist/cli/commands/init.js +0 -90
  182. package/dist/cli/commands/init.js.map +0 -1
  183. package/dist/cli/commands/metering.d.ts +0 -3
  184. package/dist/cli/commands/metering.d.ts.map +0 -1
  185. package/dist/cli/commands/metering.js.map +0 -1
  186. package/dist/cli/commands/metering.test.d.ts.map +0 -1
  187. package/dist/cli/commands/metering.test.js.map +0 -1
  188. package/dist/cli/commands/plugin-create.d.ts +0 -11
  189. package/dist/cli/commands/plugin-create.d.ts.map +0 -1
  190. package/dist/cli/commands/plugin-create.js +0 -201
  191. package/dist/cli/commands/plugin-create.js.map +0 -1
  192. package/dist/cli/commands/plugin-create.test.d.ts +0 -2
  193. package/dist/cli/commands/plugin-create.test.d.ts.map +0 -1
  194. package/dist/cli/commands/plugin-create.test.js +0 -53
  195. package/dist/cli/commands/plugin-create.test.js.map +0 -1
  196. package/dist/cli/commands/plugin.d.ts +0 -3
  197. package/dist/cli/commands/plugin.d.ts.map +0 -1
  198. package/dist/cli/commands/plugin.js +0 -279
  199. package/dist/cli/commands/plugin.js.map +0 -1
  200. package/dist/cli/commands/plugin.test.d.ts +0 -2
  201. package/dist/cli/commands/plugin.test.d.ts.map +0 -1
  202. package/dist/cli/commands/plugin.test.js +0 -54
  203. package/dist/cli/commands/plugin.test.js.map +0 -1
  204. package/dist/cli/commands/profile.d.ts.map +0 -1
  205. package/dist/cli/commands/profile.js.map +0 -1
  206. package/dist/cli/commands/register.d.ts +0 -3
  207. package/dist/cli/commands/register.d.ts.map +0 -1
  208. package/dist/cli/commands/register.js.map +0 -1
  209. package/dist/cli/commands/seed.d.ts +0 -14
  210. package/dist/cli/commands/seed.d.ts.map +0 -1
  211. package/dist/cli/commands/seed.js.map +0 -1
  212. package/dist/cli/commands/seed.test.d.ts +0 -2
  213. package/dist/cli/commands/seed.test.d.ts.map +0 -1
  214. package/dist/cli/commands/seed.test.js +0 -92
  215. package/dist/cli/commands/seed.test.js.map +0 -1
  216. package/dist/cli/commands/setup.d.ts +0 -3
  217. package/dist/cli/commands/setup.d.ts.map +0 -1
  218. package/dist/cli/commands/setup.js +0 -84
  219. package/dist/cli/commands/setup.js.map +0 -1
  220. package/dist/cli/commands/stake.d.ts +0 -3
  221. package/dist/cli/commands/stake.d.ts.map +0 -1
  222. package/dist/cli/commands/stake.js.map +0 -1
  223. package/dist/cli/commands/status.d.ts +0 -8
  224. package/dist/cli/commands/status.d.ts.map +0 -1
  225. package/dist/cli/commands/status.js +0 -55
  226. package/dist/cli/commands/status.js.map +0 -1
  227. package/dist/cli/commands/subscribe.d.ts +0 -3
  228. package/dist/cli/commands/subscribe.d.ts.map +0 -1
  229. package/dist/cli/commands/subscribe.js.map +0 -1
  230. package/dist/cli/commands/withdraw.d.ts +0 -3
  231. package/dist/cli/commands/withdraw.d.ts.map +0 -1
  232. package/dist/cli/commands/withdraw.js.map +0 -1
  233. /package/dist/cli/commands/{metering.test.d.ts → buyer/metering.test.d.ts} +0 -0
  234. /package/dist/cli/commands/{metering.test.js → buyer/metering.test.js} +0 -0
  235. /package/dist/cli/commands/{profile.d.ts → identity/profile.d.ts} +0 -0
  236. /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 { homedir } from 'node:os';
6
- import { getGlobalOptions } from './types.js';
7
- import { loadConfig } from '../../config/loader.js';
8
- import { AntseedNode, getInstance, resolveChainConfig } from '@antseed/node';
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 '../shutdown.js';
11
- import { loadProviderPlugin, buildPluginConfig, getPackageVersions } from '../../plugins/loader.js';
12
- import { resolveEffectiveSellerConfig } from '../../config/effective.js';
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
- /** Map config file provider entry to env-style key/value pairs for the plugin. */
18
- function providerConfigToEnv(p) {
19
- const env = {};
20
- if (p.authValue)
21
- env['ANTHROPIC_API_KEY'] = p.authValue;
22
- if (p.authType)
23
- env['ANTSEED_AUTH_TYPE'] = p.authType;
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 providerPricing = sellerConfig.pricing.providers?.[providerName];
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 (providerPricing?.defaults) {
92
- runtimeEnv['ANTSEED_INPUT_USD_PER_MILLION'] = String(providerPricing.defaults.inputUsdPerMillion);
93
- runtimeEnv['ANTSEED_OUTPUT_USD_PER_MILLION'] = String(providerPricing.defaults.outputUsdPerMillion);
170
+ if (!providerCfg) {
171
+ return runtimeEnv;
94
172
  }
95
- if (servicePricing && Object.keys(servicePricing).length > 0) {
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 (serviceCategories && Object.keys(serviceCategories).length > 0) {
99
- runtimeEnv['ANTSEED_SERVICE_CATEGORIES_JSON'] = JSON.stringify(serviceCategories);
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 parseRuntimeServiceCategoriesJson(raw) {
119
- if (!raw) {
120
- return undefined;
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 <name>', 'provider plugin name (e.g., anthropic)')
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(program);
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
- let provider;
171
- if (options.instance) {
172
- const configPath = join(homedir(), '.antseed', 'config.json');
173
- const instance = await getInstance(configPath, options.instance);
174
- if (!instance) {
175
- console.error(chalk.red(`Instance "${options.instance}" not found.`));
176
- process.exit(1);
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
- else if (options.provider) {
201
- const spinner = ora(`Loading provider plugin "${options.provider}"...`).start();
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(options.provider);
204
- const configProvider = config.providers.find(p => p.type === options.provider);
205
- const fileConfig = configProvider ? providerConfigToEnv(configProvider) : {};
206
- const runtimeEnv = buildSellerPluginRuntimeEnv(effectiveSellerConfig, options.provider);
207
- const envAndFileConfig = buildPluginConfig(plugin.configSchema ?? plugin.configKeys ?? [], undefined, fileConfig);
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 = 'Validating credentials...';
276
+ spinner.text = `Validating credentials for "${providerName}"...`;
212
277
  await provider.init();
213
278
  }
214
- spinner.succeed(chalk.green(`Provider "${plugin.displayName}" loaded`));
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 providerName = options.provider ?? provider.name ?? 'unknown';
269
- const runtimeProviderEnv = buildSellerPluginRuntimeEnv(effectiveSellerConfig, providerName);
270
- const runtimeServiceCategories = parseRuntimeServiceCategoriesJson(runtimeProviderEnv['ANTSEED_SERVICE_CATEGORIES_JSON']);
271
- if (runtimeServiceCategories) {
272
- provider.serviceCategories = runtimeServiceCategories;
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
- const versions = getPackageVersions(providerName);
275
- if (Object.keys(versions).length > 0) {
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(` provider: ${providerName}`));
280
- console.log(chalk.dim(` pricing defaults (USD/1M): input=${provider.pricing.defaults.inputUsdPerMillion}, output=${provider.pricing.defaults.outputUsdPerMillion}`));
281
- console.log(chalk.dim(` enabled providers: ${effectiveSellerConfig.enabledProviders.length > 0 ? effectiveSellerConfig.enabledProviders.join(', ') : '(none)'}`));
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
- provider = new AntAgentProvider(provider, agentDef);
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
- provider = new AntAgentProvider(provider, agentMap);
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
- node.registerProvider(provider);
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 cap = provider.getCapacity();
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: providerName,
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: providerName,
427
- defaultInputUsdPerMillion: provider.pricing.defaults.inputUsdPerMillion,
428
- defaultOutputUsdPerMillion: provider.pricing.defaults.outputUsdPerMillion,
429
- providerPricing: {
430
- [providerName]: {
431
- defaults: {
432
- inputUsdPerMillion: provider.pricing.defaults.inputUsdPerMillion,
433
- outputUsdPerMillion: provider.pricing.defaults.outputUsdPerMillion,
434
- },
435
- ...(provider.pricing.services ? { services: provider.pricing.services } : {}),
436
- },
437
- },
438
- ...(runtimeServiceCategories
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
- [providerName]: {
442
- services: runtimeServiceCategories,
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=seed.js.map
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=start.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seller/start.test.ts"],"names":[],"mappings":""}