@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.
Files changed (233) 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/package.json +8 -8
  147. package/dist/cli/commands/balance.d.ts +0 -3
  148. package/dist/cli/commands/balance.d.ts.map +0 -1
  149. package/dist/cli/commands/balance.js.map +0 -1
  150. package/dist/cli/commands/bootstrap.d.ts +0 -3
  151. package/dist/cli/commands/bootstrap.d.ts.map +0 -1
  152. package/dist/cli/commands/bootstrap.js.map +0 -1
  153. package/dist/cli/commands/browse.d.ts +0 -7
  154. package/dist/cli/commands/browse.d.ts.map +0 -1
  155. package/dist/cli/commands/browse.js.map +0 -1
  156. package/dist/cli/commands/channels.d.ts +0 -3
  157. package/dist/cli/commands/channels.d.ts.map +0 -1
  158. package/dist/cli/commands/channels.js.map +0 -1
  159. package/dist/cli/commands/config.d.ts.map +0 -1
  160. package/dist/cli/commands/config.js +0 -239
  161. package/dist/cli/commands/config.js.map +0 -1
  162. package/dist/cli/commands/connect.d.ts.map +0 -1
  163. package/dist/cli/commands/connect.js.map +0 -1
  164. package/dist/cli/commands/connect.test.d.ts +0 -2
  165. package/dist/cli/commands/connect.test.d.ts.map +0 -1
  166. package/dist/cli/commands/connect.test.js.map +0 -1
  167. package/dist/cli/commands/connection.d.ts +0 -3
  168. package/dist/cli/commands/connection.d.ts.map +0 -1
  169. package/dist/cli/commands/connection.js.map +0 -1
  170. package/dist/cli/commands/deposit.d.ts +0 -3
  171. package/dist/cli/commands/deposit.d.ts.map +0 -1
  172. package/dist/cli/commands/deposit.js.map +0 -1
  173. package/dist/cli/commands/emissions.d.ts +0 -3
  174. package/dist/cli/commands/emissions.d.ts.map +0 -1
  175. package/dist/cli/commands/emissions.js.map +0 -1
  176. package/dist/cli/commands/init.d.ts +0 -3
  177. package/dist/cli/commands/init.d.ts.map +0 -1
  178. package/dist/cli/commands/init.js +0 -90
  179. package/dist/cli/commands/init.js.map +0 -1
  180. package/dist/cli/commands/metering.d.ts +0 -3
  181. package/dist/cli/commands/metering.d.ts.map +0 -1
  182. package/dist/cli/commands/metering.js.map +0 -1
  183. package/dist/cli/commands/metering.test.d.ts.map +0 -1
  184. package/dist/cli/commands/metering.test.js.map +0 -1
  185. package/dist/cli/commands/plugin-create.d.ts +0 -11
  186. package/dist/cli/commands/plugin-create.d.ts.map +0 -1
  187. package/dist/cli/commands/plugin-create.js +0 -201
  188. package/dist/cli/commands/plugin-create.js.map +0 -1
  189. package/dist/cli/commands/plugin-create.test.d.ts +0 -2
  190. package/dist/cli/commands/plugin-create.test.d.ts.map +0 -1
  191. package/dist/cli/commands/plugin-create.test.js +0 -53
  192. package/dist/cli/commands/plugin-create.test.js.map +0 -1
  193. package/dist/cli/commands/plugin.d.ts +0 -3
  194. package/dist/cli/commands/plugin.d.ts.map +0 -1
  195. package/dist/cli/commands/plugin.js +0 -279
  196. package/dist/cli/commands/plugin.js.map +0 -1
  197. package/dist/cli/commands/plugin.test.d.ts +0 -2
  198. package/dist/cli/commands/plugin.test.d.ts.map +0 -1
  199. package/dist/cli/commands/plugin.test.js +0 -54
  200. package/dist/cli/commands/plugin.test.js.map +0 -1
  201. package/dist/cli/commands/profile.d.ts.map +0 -1
  202. package/dist/cli/commands/profile.js.map +0 -1
  203. package/dist/cli/commands/register.d.ts +0 -3
  204. package/dist/cli/commands/register.d.ts.map +0 -1
  205. package/dist/cli/commands/register.js.map +0 -1
  206. package/dist/cli/commands/seed.d.ts +0 -14
  207. package/dist/cli/commands/seed.d.ts.map +0 -1
  208. package/dist/cli/commands/seed.js.map +0 -1
  209. package/dist/cli/commands/seed.test.d.ts +0 -2
  210. package/dist/cli/commands/seed.test.d.ts.map +0 -1
  211. package/dist/cli/commands/seed.test.js +0 -92
  212. package/dist/cli/commands/seed.test.js.map +0 -1
  213. package/dist/cli/commands/setup.d.ts +0 -3
  214. package/dist/cli/commands/setup.d.ts.map +0 -1
  215. package/dist/cli/commands/setup.js +0 -84
  216. package/dist/cli/commands/setup.js.map +0 -1
  217. package/dist/cli/commands/stake.d.ts +0 -3
  218. package/dist/cli/commands/stake.d.ts.map +0 -1
  219. package/dist/cli/commands/stake.js.map +0 -1
  220. package/dist/cli/commands/status.d.ts +0 -8
  221. package/dist/cli/commands/status.d.ts.map +0 -1
  222. package/dist/cli/commands/status.js +0 -55
  223. package/dist/cli/commands/status.js.map +0 -1
  224. package/dist/cli/commands/subscribe.d.ts +0 -3
  225. package/dist/cli/commands/subscribe.d.ts.map +0 -1
  226. package/dist/cli/commands/subscribe.js.map +0 -1
  227. package/dist/cli/commands/withdraw.d.ts +0 -3
  228. package/dist/cli/commands/withdraw.d.ts.map +0 -1
  229. package/dist/cli/commands/withdraw.js.map +0 -1
  230. /package/dist/cli/commands/{metering.test.d.ts → buyer/metering.test.d.ts} +0 -0
  231. /package/dist/cli/commands/{metering.test.js → buyer/metering.test.js} +0 -0
  232. /package/dist/cli/commands/{profile.d.ts → identity/profile.d.ts} +0 -0
  233. /package/dist/cli/commands/{profile.js → identity/profile.js} +0 -0
@@ -4,8 +4,17 @@ import { createDefaultConfig } from './defaults.js';
4
4
  import { resolveEffectiveBuyerConfig, resolveEffectiveRoleConfig, resolveEffectiveSellerConfig, } from './effective.js';
5
5
  test('effective seller config precedence is flags > env > config > defaults', () => {
6
6
  const config = createDefaultConfig();
7
- config.seller.pricing.defaults.inputUsdPerMillion = 10;
8
- config.seller.pricing.defaults.outputUsdPerMillion = 20;
7
+ config.seller.providers = {
8
+ openai: {
9
+ plugin: 'openai',
10
+ defaults: { inputUsdPerMillion: 10, outputUsdPerMillion: 20 },
11
+ services: {
12
+ 'gpt-4': {
13
+ pricing: { inputUsdPerMillion: 15, outputUsdPerMillion: 25 },
14
+ },
15
+ },
16
+ },
17
+ };
9
18
  const env = {
10
19
  ANTSEED_SELLER_INPUT_USD_PER_MILLION: '30',
11
20
  ANTSEED_SELLER_OUTPUT_USD_PER_MILLION: '40',
@@ -17,8 +26,11 @@ test('effective seller config precedence is flags > env > config > defaults', ()
17
26
  inputUsdPerMillion: 50,
18
27
  },
19
28
  });
20
- assert.equal(effective.pricing.defaults.inputUsdPerMillion, 50);
21
- assert.equal(effective.pricing.defaults.outputUsdPerMillion, 40);
29
+ // Global overrides shift provider defaults, leaving service-specific entries alone.
30
+ assert.equal(effective.providers.openai?.defaults?.inputUsdPerMillion, 50);
31
+ assert.equal(effective.providers.openai?.defaults?.outputUsdPerMillion, 40);
32
+ assert.equal(effective.providers.openai?.services['gpt-4']?.pricing?.inputUsdPerMillion, 15);
33
+ assert.equal(effective.providers.openai?.services['gpt-4']?.pricing?.outputUsdPerMillion, 25);
22
34
  });
23
35
  test('effective buyer config precedence is flags > env > config > defaults', () => {
24
36
  const config = createDefaultConfig();
@@ -44,6 +56,13 @@ test('effective buyer config precedence is flags > env > config > defaults', ()
44
56
  });
45
57
  test('effective config resolution does not mutate loaded config', () => {
46
58
  const config = createDefaultConfig();
59
+ config.seller.providers = {
60
+ openai: {
61
+ plugin: 'openai',
62
+ defaults: { inputUsdPerMillion: 10, outputUsdPerMillion: 20 },
63
+ services: {},
64
+ },
65
+ };
47
66
  const original = JSON.parse(JSON.stringify(config));
48
67
  const env = {
49
68
  ANTSEED_BUYER_MAX_INPUT_USD_PER_MILLION: '123',
@@ -56,7 +75,7 @@ test('effective config resolution does not mutate loaded config', () => {
56
75
  },
57
76
  });
58
77
  assert.equal(effective.buyer.maxPricing.defaults.inputUsdPerMillion, 123);
59
- assert.equal(effective.seller.pricing.defaults.outputUsdPerMillion, 44);
78
+ assert.equal(effective.seller.providers.openai?.defaults?.outputUsdPerMillion, 44);
60
79
  assert.deepEqual(config, original);
61
80
  });
62
81
  //# sourceMappingURL=effective.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"effective.test.js","sourceRoot":"","sources":["../../src/config/effective.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"effective.test.js","sourceRoot":"","sources":["../../src/config/effective.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,EAGd,MAAM,YAAY,CAAC;AA8PpB;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAgD3E;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzF"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,YAAY,CAAC;AAoNpB;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6C3E;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzF"}
@@ -52,103 +52,82 @@ function mergeTokenPricing(defaults, value) {
52
52
  : {}),
53
53
  };
54
54
  }
55
- function cloneProviderPricing(providers) {
56
- if (!providers)
55
+ function mergeHierarchicalPricing(defaults, value) {
56
+ if (!isRecord(value)) {
57
+ return { defaults: clonePricing(defaults.defaults) };
58
+ }
59
+ return { defaults: mergeTokenPricing(defaults.defaults, value['defaults']) };
60
+ }
61
+ /* ── Seller provider + services merge ──────────────────────────────────── */
62
+ function normalizeCategories(value) {
63
+ if (!Array.isArray(value))
57
64
  return undefined;
65
+ const out = value
66
+ .filter((entry) => typeof entry === 'string')
67
+ .map((entry) => entry.trim().toLowerCase())
68
+ .filter((entry) => entry.length > 0);
69
+ return out.length > 0 ? Array.from(new Set(out)) : undefined;
70
+ }
71
+ function normalizeSellerService(value) {
72
+ if (!isRecord(value))
73
+ return null;
58
74
  const out = {};
59
- for (const [provider, cfg] of Object.entries(providers)) {
60
- out[provider] = {
61
- ...(cfg.defaults ? { defaults: clonePricing(cfg.defaults) } : {}),
62
- ...(cfg.services ? { services: { ...cfg.services } } : {}),
63
- };
75
+ if (typeof value['upstreamModel'] === 'string' && value['upstreamModel'].trim().length > 0) {
76
+ out.upstreamModel = value['upstreamModel'].trim();
77
+ }
78
+ const categories = normalizeCategories(value['categories']);
79
+ if (categories) {
80
+ out.categories = categories;
81
+ }
82
+ const pricing = normalizeTokenPricing(value['pricing']);
83
+ if (pricing) {
84
+ out.pricing = pricing;
64
85
  }
65
86
  return out;
66
87
  }
67
- function mergeServicePricing(defaults, value) {
68
- const out = {
69
- ...(defaults ?? {}),
70
- };
71
- if (isRecord(value)) {
72
- for (const [service, rawPricing] of Object.entries(value)) {
73
- const parsed = normalizeTokenPricing(rawPricing);
88
+ function normalizeSellerProvider(value) {
89
+ if (!isRecord(value))
90
+ return null;
91
+ if (typeof value['plugin'] !== 'string' || value['plugin'].trim().length === 0)
92
+ return null;
93
+ const out = { plugin: value['plugin'].trim(), services: {} };
94
+ if (typeof value['baseUrl'] === 'string' && value['baseUrl'].trim().length > 0) {
95
+ out.baseUrl = value['baseUrl'].trim();
96
+ }
97
+ const defaults = normalizeTokenPricing(value['defaults']);
98
+ if (defaults) {
99
+ out.defaults = defaults;
100
+ }
101
+ const rawServices = value['services'];
102
+ if (isRecord(rawServices)) {
103
+ for (const [serviceId, rawService] of Object.entries(rawServices)) {
104
+ const parsed = normalizeSellerService(rawService);
74
105
  if (parsed) {
75
- out[service] = parsed;
76
- }
77
- }
78
- }
79
- return Object.keys(out).length > 0 ? out : undefined;
80
- }
81
- function mergeProviderPricing(defaults, value) {
82
- const out = cloneProviderPricing(defaults) ?? {};
83
- if (isRecord(value)) {
84
- for (const [provider, rawCfg] of Object.entries(value)) {
85
- if (!isRecord(rawCfg))
86
- continue;
87
- const existing = out[provider];
88
- const parsedDefaults = normalizeTokenPricing(rawCfg['defaults']);
89
- const next = {
90
- ...(parsedDefaults ? { defaults: parsedDefaults } : (existing?.defaults ? { defaults: existing.defaults } : {})),
91
- };
92
- const mergedServices = mergeServicePricing(existing?.services, rawCfg['services']);
93
- if (mergedServices) {
94
- next.services = mergedServices;
95
- }
96
- if (next.defaults || next.services) {
97
- out[provider] = next;
106
+ out.services[serviceId] = parsed;
98
107
  }
99
108
  }
100
109
  }
101
- return Object.keys(out).length > 0 ? out : undefined;
102
- }
103
- function mergeHierarchicalPricing(defaults, value) {
104
- if (!isRecord(value)) {
105
- return {
106
- defaults: clonePricing(defaults.defaults),
107
- ...(defaults.providers ? { providers: cloneProviderPricing(defaults.providers) } : {}),
108
- };
109
- }
110
- const mergedProviders = mergeProviderPricing(defaults.providers, value['providers']);
111
- return {
112
- defaults: mergeTokenPricing(defaults.defaults, value['defaults']),
113
- ...(mergedProviders ? { providers: mergedProviders } : {}),
114
- };
115
- }
116
- function cloneSellerServiceCategories(categories) {
117
- if (!categories)
118
- return undefined;
119
- const out = {};
120
- for (const [provider, services] of Object.entries(categories)) {
121
- out[provider] = Object.fromEntries(Object.entries(services).map(([service, tags]) => [service, [...tags]]));
122
- }
123
110
  return out;
124
111
  }
125
- function mergeSellerServiceCategories(defaults, value) {
126
- const out = cloneSellerServiceCategories(defaults) ?? {};
127
- if (!isRecord(value)) {
128
- return Object.keys(out).length > 0 ? out : undefined;
129
- }
130
- for (const [provider, rawProvider] of Object.entries(value)) {
131
- if (!isRecord(rawProvider))
132
- continue;
133
- const nextServices = {
134
- ...(out[provider] ?? {}),
112
+ function mergeSellerProviders(defaults, value) {
113
+ const out = {};
114
+ for (const [name, cfg] of Object.entries(defaults)) {
115
+ out[name] = {
116
+ plugin: cfg.plugin,
117
+ ...(cfg.baseUrl ? { baseUrl: cfg.baseUrl } : {}),
118
+ ...(cfg.defaults ? { defaults: clonePricing(cfg.defaults) } : {}),
119
+ services: { ...cfg.services },
135
120
  };
136
- for (const [service, rawCategories] of Object.entries(rawProvider)) {
137
- if (!Array.isArray(rawCategories))
138
- continue;
139
- const normalizedCategories = rawCategories
140
- .filter((entry) => typeof entry === 'string')
141
- .map((entry) => entry.trim())
142
- .filter((entry) => entry.length > 0);
143
- if (normalizedCategories.length > 0) {
144
- nextServices[service] = normalizedCategories;
145
- }
146
- }
147
- if (Object.keys(nextServices).length > 0) {
148
- out[provider] = nextServices;
121
+ }
122
+ if (!isRecord(value))
123
+ return out;
124
+ for (const [name, rawProvider] of Object.entries(value)) {
125
+ const parsed = normalizeSellerProvider(rawProvider);
126
+ if (parsed) {
127
+ out[name] = parsed;
149
128
  }
150
129
  }
151
- return Object.keys(out).length > 0 ? out : undefined;
130
+ return out;
152
131
  }
153
132
  function normalizeAgentDir(value, fallback) {
154
133
  if (typeof value === 'string')
@@ -170,14 +149,11 @@ function mergeSellerConfig(defaults, value) {
170
149
  return {
171
150
  reserveFloor: defaults.reserveFloor,
172
151
  maxConcurrentBuyers: defaults.maxConcurrentBuyers,
173
- enabledProviders: [...defaults.enabledProviders],
174
- pricing: mergeHierarchicalPricing(defaults.pricing, undefined),
152
+ providers: mergeSellerProviders(defaults.providers, undefined),
175
153
  publicAddress: defaults.publicAddress,
176
154
  ...(defaults.agentDir ? { agentDir: defaults.agentDir } : {}),
177
- ...(defaults.serviceCategories ? { serviceCategories: cloneSellerServiceCategories(defaults.serviceCategories) } : {}),
178
155
  };
179
156
  }
180
- const mergedServiceCategories = mergeSellerServiceCategories(defaults.serviceCategories, value['serviceCategories']);
181
157
  return {
182
158
  reserveFloor: typeof value['reserveFloor'] === 'number'
183
159
  ? value['reserveFloor']
@@ -185,15 +161,11 @@ function mergeSellerConfig(defaults, value) {
185
161
  maxConcurrentBuyers: typeof value['maxConcurrentBuyers'] === 'number'
186
162
  ? value['maxConcurrentBuyers']
187
163
  : defaults.maxConcurrentBuyers,
188
- enabledProviders: Array.isArray(value['enabledProviders'])
189
- ? value['enabledProviders'].filter((entry) => typeof entry === 'string')
190
- : [...defaults.enabledProviders],
191
- pricing: mergeHierarchicalPricing(defaults.pricing, value['pricing']),
164
+ providers: mergeSellerProviders(defaults.providers, value['providers']),
192
165
  publicAddress: typeof value['publicAddress'] === 'string'
193
166
  ? value['publicAddress']
194
167
  : defaults.publicAddress,
195
168
  ...(normalizeAgentDir(value['agentDir'], defaults.agentDir)),
196
- ...(mergedServiceCategories ? { serviceCategories: mergedServiceCategories } : {}),
197
169
  };
198
170
  }
199
171
  function mergeBuyerConfig(defaults, value) {
@@ -257,9 +229,6 @@ export async function loadConfig(configPath) {
257
229
  ...defaults.network,
258
230
  ...(isRecord(parsed['network']) ? parsed['network'] : {}),
259
231
  },
260
- providers: Array.isArray(parsed['providers'])
261
- ? parsed['providers']
262
- : defaults.providers,
263
232
  };
264
233
  assertValidConfig(merged);
265
234
  return merged;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -15,90 +15,111 @@ async function withTempConfig(contents, fn) {
15
15
  await rm(dir, { recursive: true, force: true });
16
16
  }
17
17
  }
18
- test('loadConfig deep-merges nested hierarchical pricing without dropping defaults', async () => {
18
+ test('loadConfig reads nested seller.providers[name].services[id] shape', async () => {
19
19
  await withTempConfig(JSON.stringify({
20
20
  seller: {
21
- pricing: {
22
- providers: {
23
- anthropic: {
24
- services: {
25
- 'claude-sonnet-4-5-20250929': {
21
+ providers: {
22
+ anthropic: {
23
+ plugin: 'anthropic',
24
+ defaults: { inputUsdPerMillion: 5, outputUsdPerMillion: 10 },
25
+ services: {
26
+ 'claude-sonnet-4-5-20250929': {
27
+ upstreamModel: 'claude-sonnet-4-5-20250929',
28
+ categories: ['coding', 'chat'],
29
+ pricing: {
26
30
  inputUsdPerMillion: 12,
27
31
  outputUsdPerMillion: 18,
32
+ cachedInputUsdPerMillion: 1.5,
28
33
  },
29
34
  },
30
35
  },
31
36
  },
32
37
  },
33
38
  },
34
- buyer: {
35
- maxPricing: {
36
- providers: {
37
- openai: {
38
- defaults: {
39
- inputUsdPerMillion: 55,
40
- outputUsdPerMillion: 77,
39
+ }), async (configPath) => {
40
+ const config = await loadConfig(configPath);
41
+ const anthropic = config.seller.providers['anthropic'];
42
+ assert.ok(anthropic);
43
+ assert.equal(anthropic.defaults?.inputUsdPerMillion, 5);
44
+ assert.equal(anthropic.defaults?.outputUsdPerMillion, 10);
45
+ const service = anthropic.services['claude-sonnet-4-5-20250929'];
46
+ assert.ok(service);
47
+ assert.equal(service.upstreamModel, 'claude-sonnet-4-5-20250929');
48
+ assert.deepEqual(service.categories, ['coding', 'chat']);
49
+ assert.equal(service.pricing?.inputUsdPerMillion, 12);
50
+ assert.equal(service.pricing?.outputUsdPerMillion, 18);
51
+ assert.equal(service.pricing?.cachedInputUsdPerMillion, 1.5);
52
+ });
53
+ });
54
+ test('loadConfig rejects incomplete service pricing', async () => {
55
+ await withTempConfig(JSON.stringify({
56
+ seller: {
57
+ providers: {
58
+ anthropic: {
59
+ plugin: 'anthropic',
60
+ services: {
61
+ broken: {
62
+ pricing: { inputUsdPerMillion: 12 },
41
63
  },
42
64
  },
43
65
  },
44
66
  },
45
67
  },
46
68
  }), async (configPath) => {
47
- const config = await loadConfig(configPath);
48
- assert.equal(config.seller.pricing.defaults.inputUsdPerMillion, 10);
49
- assert.equal(config.seller.pricing.defaults.outputUsdPerMillion, 10);
50
- assert.equal(config.seller.pricing.providers?.anthropic?.services?.['claude-sonnet-4-5-20250929']?.inputUsdPerMillion, 12);
51
- assert.equal(config.seller.pricing.providers?.anthropic?.services?.['claude-sonnet-4-5-20250929']?.outputUsdPerMillion, 18);
52
- assert.equal(config.buyer.maxPricing.defaults.inputUsdPerMillion, 100);
53
- assert.equal(config.buyer.maxPricing.defaults.outputUsdPerMillion, 100);
54
- assert.equal(config.buyer.maxPricing.providers?.openai?.defaults?.inputUsdPerMillion, 55);
55
- assert.equal(config.buyer.maxPricing.providers?.openai?.defaults?.outputUsdPerMillion, 77);
69
+ await assert.rejects(async () => loadConfig(configPath), /seller\.providers\.anthropic\.services\.broken\.pricing\.outputUsdPerMillion/);
56
70
  });
57
71
  });
58
- test('loadConfig throws explicit validation error for incomplete service pricing', async () => {
72
+ test('loadConfig rejects invalid category tags', async () => {
59
73
  await withTempConfig(JSON.stringify({
60
74
  seller: {
61
- pricing: {
62
- providers: {
63
- anthropic: {
64
- services: {
65
- broken: {
66
- inputUsdPerMillion: 12,
67
- },
75
+ providers: {
76
+ anthropic: {
77
+ plugin: 'anthropic',
78
+ services: {
79
+ 'claude-sonnet-4-5-20250929': {
80
+ categories: ['Bad Value'],
68
81
  },
69
82
  },
70
83
  },
71
84
  },
72
85
  },
73
86
  }), async (configPath) => {
74
- await assert.rejects(async () => loadConfig(configPath), /seller\.pricing\.providers\.anthropic\.services\.broken\.outputUsdPerMillion/);
87
+ await assert.rejects(async () => loadConfig(configPath), /seller\.providers\.anthropic\.services\.claude-sonnet-4-5-20250929\.categories/);
75
88
  });
76
89
  });
77
- test('loadConfig merges seller service categories per provider/service', async () => {
90
+ test('loadConfig normalizes category tags (lowercase, dedupe)', async () => {
78
91
  await withTempConfig(JSON.stringify({
79
92
  seller: {
80
- serviceCategories: {
81
- anthropic: {
82
- 'claude-sonnet-4-5-20250929': ['coding', 'legal'],
93
+ providers: {
94
+ openai: {
95
+ plugin: 'openai',
96
+ services: {
97
+ 'gpt-4': {
98
+ categories: ['Chat', 'chat', 'Coding'],
99
+ },
100
+ },
83
101
  },
84
102
  },
85
103
  },
86
104
  }), async (configPath) => {
87
105
  const config = await loadConfig(configPath);
88
- assert.deepEqual(config.seller.serviceCategories?.anthropic?.['claude-sonnet-4-5-20250929'], ['coding', 'legal']);
106
+ assert.deepEqual(config.seller.providers['openai']?.services['gpt-4']?.categories, ['chat', 'coding']);
89
107
  });
90
108
  });
91
- test('loadConfig rejects invalid seller service category values', async () => {
109
+ test('loadConfig drops seller provider entries without plugin', async () => {
92
110
  await withTempConfig(JSON.stringify({
93
111
  seller: {
94
- serviceCategories: {
95
- anthropic: {
96
- 'claude-sonnet-4-5-20250929': ['Bad Value'],
112
+ providers: {
113
+ openai: {
114
+ services: {
115
+ 'gpt-4': {},
116
+ },
97
117
  },
98
118
  },
99
119
  },
100
120
  }), async (configPath) => {
101
- await assert.rejects(async () => loadConfig(configPath), /seller\.serviceCategories\.anthropic\.claude-sonnet-4-5-20250929/);
121
+ const config = await loadConfig(configPath);
122
+ assert.equal(config.seller.providers['openai'], undefined);
102
123
  });
103
124
  });
104
125
  test('loadConfig preserves seller publicAddress override', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/config/loader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/config/loader.test.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,3 @@
1
- import type { ProviderType } from '@antseed/node';
2
- /**
3
- * Provider configuration for the Antseed config file.
4
- * This is distinct from the provider.ts ProviderConfig used internally.
5
- */
6
- export interface CLIProviderConfig {
7
- /** Provider type identifier */
8
- type: ProviderType;
9
- /** API endpoint URL */
10
- endpoint: string;
11
- /** Name of the HTTP header used for authentication */
12
- authHeaderName: string;
13
- /** Auth token / API key value */
14
- authValue: string;
15
- /** Auth type: 'apikey' (default), 'oauth' (with refresh), or 'claude-code' (read from keychain) */
16
- authType?: 'apikey' | 'oauth' | 'claude-code';
17
- /** OAuth refresh token (required when authType is 'oauth') */
18
- refreshToken?: string;
19
- /** Token expiration timestamp in epoch ms (used with authType 'oauth') */
20
- expiresAt?: number;
21
- }
22
- /**
23
- * Re-export ProviderType for convenience in config commands.
24
- */
25
- export type { ProviderType } from '@antseed/node';
26
1
  /**
27
2
  * Dual token pricing in USD per 1M tokens.
28
3
  */
@@ -32,24 +7,42 @@ export interface TokenPricingUsdPerMillion {
32
7
  cachedInputUsdPerMillion?: number;
33
8
  }
34
9
  /**
35
- * Provider-level optional defaults and per-service overrides.
10
+ * Hierarchical pricing used for BUYER max-willing-to-pay rules only.
11
+ * Seller pricing has moved to `seller.providers[name].services[id]`.
36
12
  */
37
- export interface ProviderPricingConfig {
38
- defaults?: TokenPricingUsdPerMillion;
39
- services?: Record<string, TokenPricingUsdPerMillion>;
13
+ export interface HierarchicalPricingConfig {
14
+ defaults: TokenPricingUsdPerMillion;
40
15
  }
41
16
  /**
42
- * Hierarchical pricing with global defaults and optional provider/service overrides.
17
+ * One service offered by a seller under a given provider.
43
18
  */
44
- export interface HierarchicalPricingConfig {
45
- defaults: TokenPricingUsdPerMillion;
46
- providers?: Record<string, ProviderPricingConfig>;
19
+ export interface SellerServiceConfig {
20
+ /**
21
+ * Upstream model identifier the provider plugin will forward requests to.
22
+ * When omitted, the service ID itself is used verbatim. Example: service
23
+ * `"deepseek-v3.1"` with upstreamModel `"deepseek-ai/DeepSeek-V3.1"`.
24
+ */
25
+ upstreamModel?: string;
26
+ /** Normie-friendly tags announced in peer metadata (e.g. "chat", "coding"). */
27
+ categories?: string[];
28
+ /**
29
+ * Pricing override for this specific service. If absent, the provider's
30
+ * defaults are used.
31
+ */
32
+ pricing?: TokenPricingUsdPerMillion;
47
33
  }
48
34
  /**
49
- * Optional provider/service category tags for metadata discovery.
35
+ * Per-provider seller configuration.
50
36
  */
51
- export interface SellerServiceCategoryConfig {
52
- [provider: string]: Record<string, string[]>;
37
+ export interface SellerProviderConfig {
38
+ /** Plugin name or npm package that powers this provider (e.g. "openai", "@antseed/provider-openai"). */
39
+ plugin: string;
40
+ /** Optional upstream API base URL override (e.g. "https://api.together.ai"). */
41
+ baseUrl?: string;
42
+ /** Fallback pricing used by services that don't set their own `pricing`. */
43
+ defaults?: TokenPricingUsdPerMillion;
44
+ /** Services offered under this provider, keyed by announced service ID. */
45
+ services: Record<string, SellerServiceConfig>;
53
46
  }
54
47
  /**
55
48
  * Seller-specific configuration within the Antseed config.
@@ -59,12 +52,12 @@ export interface SellerCLIConfig {
59
52
  reserveFloor: number;
60
53
  /** Maximum number of concurrent buyer connections */
61
54
  maxConcurrentBuyers: number;
62
- /** Which provider types are enabled for selling */
63
- enabledProviders: string[];
64
- /** Seller offer pricing rules in USD per 1M tokens */
65
- pricing: HierarchicalPricingConfig;
66
- /** Optional provider/service category tags announced in peer metadata */
67
- serviceCategories?: SellerServiceCategoryConfig;
55
+ /**
56
+ * Per-provider configuration: upstream base URL, defaults, and the services
57
+ * offered under each provider. The set of keys here also determines which
58
+ * services this peer announces.
59
+ */
60
+ providers: Record<string, SellerProviderConfig>;
68
61
  /**
69
62
  * Ant agent configuration. Can be:
70
63
  * - A string path to a single agent directory (applies to all services)
@@ -143,8 +136,6 @@ export interface AntseedConfig {
143
136
  displayName: string;
144
137
  walletAddress?: string;
145
138
  };
146
- /** Configured LLM provider credentials */
147
- providers: CLIProviderConfig[];
148
139
  /** Seller mode settings */
149
140
  seller: SellerCLIConfig;
150
141
  /** Buyer mode settings */
@@ -160,9 +151,4 @@ export interface AntseedConfig {
160
151
  installedAt: string;
161
152
  }[];
162
153
  }
163
- /**
164
- * ProviderConfig alias for use in config commands.
165
- * Maps to CLIProviderConfig.
166
- */
167
- export type ProviderConfig = CLIProviderConfig;
168
154
  //# sourceMappingURL=types.d.ts.map