@antseed/cli 0.1.61 → 0.1.63
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/dist/cli/commands/agent.d.ts +3 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +165 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/balance.d.ts +3 -0
- package/dist/cli/commands/balance.d.ts.map +1 -0
- package/dist/cli/commands/balance.js +62 -0
- package/dist/cli/commands/balance.js.map +1 -0
- package/dist/cli/commands/bootstrap.d.ts +3 -0
- package/dist/cli/commands/bootstrap.d.ts.map +1 -0
- package/dist/cli/commands/bootstrap.js +46 -0
- package/dist/cli/commands/bootstrap.js.map +1 -0
- package/dist/cli/commands/browse.d.ts +7 -0
- package/dist/cli/commands/browse.d.ts.map +1 -0
- package/dist/cli/commands/browse.js +103 -0
- package/dist/cli/commands/browse.js.map +1 -0
- package/dist/cli/commands/channels.d.ts +3 -0
- package/dist/cli/commands/channels.d.ts.map +1 -0
- package/dist/cli/commands/channels.js +79 -0
- package/dist/cli/commands/channels.js.map +1 -0
- package/dist/cli/commands/config.d.ts +20 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +239 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/connect.d.ts +13 -0
- package/dist/cli/commands/connect.d.ts.map +1 -0
- package/dist/cli/commands/connect.js +402 -0
- package/dist/cli/commands/connect.js.map +1 -0
- package/dist/cli/commands/connect.test.d.ts +2 -0
- package/dist/cli/commands/connect.test.d.ts.map +1 -0
- package/dist/cli/commands/connect.test.js +52 -0
- package/dist/cli/commands/connect.test.js.map +1 -0
- package/dist/cli/commands/connection.d.ts +3 -0
- package/dist/cli/commands/connection.d.ts.map +1 -0
- package/dist/cli/commands/connection.js +128 -0
- package/dist/cli/commands/connection.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +6 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +48 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/deposit.d.ts +3 -0
- package/dist/cli/commands/deposit.d.ts.map +1 -0
- package/dist/cli/commands/deposit.js +38 -0
- package/dist/cli/commands/deposit.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +3 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +94 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/emissions.d.ts +3 -0
- package/dist/cli/commands/emissions.d.ts.map +1 -0
- package/dist/cli/commands/emissions.js +80 -0
- package/dist/cli/commands/emissions.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +90 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/payments.d.ts +3 -0
- package/dist/cli/commands/payments.d.ts.map +1 -0
- package/dist/cli/commands/payments.js +26 -0
- package/dist/cli/commands/payments.js.map +1 -0
- package/dist/cli/commands/plugin-create.d.ts +11 -0
- package/dist/cli/commands/plugin-create.d.ts.map +1 -0
- package/dist/cli/commands/plugin-create.js +201 -0
- package/dist/cli/commands/plugin-create.js.map +1 -0
- package/dist/cli/commands/plugin-create.test.d.ts +2 -0
- package/dist/cli/commands/plugin-create.test.d.ts.map +1 -0
- package/dist/cli/commands/plugin-create.test.js +53 -0
- package/dist/cli/commands/plugin-create.test.js.map +1 -0
- package/dist/cli/commands/plugin.d.ts +3 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +279 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/cli/commands/plugin.test.d.ts +2 -0
- package/dist/cli/commands/plugin.test.d.ts.map +1 -0
- package/dist/cli/commands/plugin.test.js +54 -0
- package/dist/cli/commands/plugin.test.js.map +1 -0
- package/dist/cli/commands/profile.d.ts +10 -0
- package/dist/cli/commands/profile.d.ts.map +1 -0
- package/dist/cli/commands/profile.js +89 -0
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/register.d.ts +3 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +35 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/seed.d.ts +14 -0
- package/dist/cli/commands/seed.d.ts.map +1 -0
- package/dist/cli/commands/seed.js +500 -0
- package/dist/cli/commands/seed.js.map +1 -0
- package/dist/cli/commands/seed.test.d.ts +2 -0
- package/dist/cli/commands/seed.test.d.ts.map +1 -0
- package/dist/cli/commands/seed.test.js +92 -0
- package/dist/cli/commands/seed.test.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +84 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/stake.d.ts +3 -0
- package/dist/cli/commands/stake.d.ts.map +1 -0
- package/dist/cli/commands/stake.js +83 -0
- package/dist/cli/commands/stake.js.map +1 -0
- package/dist/cli/commands/status.d.ts +8 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +55 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/subscribe.d.ts +3 -0
- package/dist/cli/commands/subscribe.d.ts.map +1 -0
- package/dist/cli/commands/subscribe.js +96 -0
- package/dist/cli/commands/subscribe.js.map +1 -0
- package/dist/cli/commands/types.d.ts +14 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/commands/types.js +41 -0
- package/dist/cli/commands/types.js.map +1 -0
- package/dist/cli/commands/withdraw.d.ts +3 -0
- package/dist/cli/commands/withdraw.d.ts.map +1 -0
- package/dist/cli/commands/withdraw.js +48 -0
- package/dist/cli/commands/withdraw.js.map +1 -0
- package/dist/cli/formatters.d.ts +29 -0
- package/dist/cli/formatters.d.ts.map +1 -0
- package/dist/cli/formatters.js +67 -0
- package/dist/cli/formatters.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +63 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/payment-utils.d.ts +53 -0
- package/dist/cli/payment-utils.d.ts.map +1 -0
- package/dist/cli/payment-utils.js +137 -0
- package/dist/cli/payment-utils.js.map +1 -0
- package/dist/cli/shutdown.d.ts +11 -0
- package/dist/cli/shutdown.d.ts.map +1 -0
- package/dist/cli/shutdown.js +34 -0
- package/dist/cli/shutdown.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +41 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/effective.d.ts +25 -0
- package/dist/config/effective.d.ts.map +1 -0
- package/dist/config/effective.js +67 -0
- package/dist/config/effective.js.map +1 -0
- package/dist/config/effective.test.d.ts +2 -0
- package/dist/config/effective.test.d.ts.map +1 -0
- package/dist/config/effective.test.js +62 -0
- package/dist/config/effective.test.js.map +1 -0
- package/dist/config/loader.d.ts +12 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +269 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/loader.test.d.ts +2 -0
- package/dist/config/loader.test.d.ts.map +1 -0
- package/dist/config/loader.test.js +124 -0
- package/dist/config/loader.test.js.map +1 -0
- package/dist/config/types.d.ts +167 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +10 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +130 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/env/load-env.d.ts +6 -0
- package/dist/env/load-env.d.ts.map +1 -0
- package/dist/env/load-env.js +18 -0
- package/dist/env/load-env.js.map +1 -0
- package/dist/plugins/loader.d.ts +12 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +111 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +11 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +52 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/registry.d.ts +8 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +45 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/proxy/buyer-proxy.d.ts +82 -0
- package/dist/proxy/buyer-proxy.d.ts.map +1 -0
- package/dist/proxy/buyer-proxy.js +1056 -0
- package/dist/proxy/buyer-proxy.js.map +1 -0
- package/dist/proxy/buyer-proxy.test.d.ts +2 -0
- package/dist/proxy/buyer-proxy.test.d.ts.map +1 -0
- package/dist/proxy/buyer-proxy.test.js +124 -0
- package/dist/proxy/buyer-proxy.test.js.map +1 -0
- package/dist/proxy/request-utils.d.ts +21 -0
- package/dist/proxy/request-utils.d.ts.map +1 -0
- package/dist/proxy/request-utils.js +237 -0
- package/dist/proxy/request-utils.js.map +1 -0
- package/dist/proxy/routing.d.ts +17 -0
- package/dist/proxy/routing.d.ts.map +1 -0
- package/dist/proxy/routing.js +115 -0
- package/dist/proxy/routing.js.map +1 -0
- package/dist/proxy/service-api-adapter.d.ts +3 -0
- package/dist/proxy/service-api-adapter.d.ts.map +1 -0
- package/dist/proxy/service-api-adapter.js +2 -0
- package/dist/proxy/service-api-adapter.js.map +1 -0
- package/dist/proxy/service-api-adapter.test.d.ts +2 -0
- package/dist/proxy/service-api-adapter.test.d.ts.map +1 -0
- package/dist/proxy/service-api-adapter.test.js +121 -0
- package/dist/proxy/service-api-adapter.test.js.map +1 -0
- package/dist/proxy/telemetry.d.ts +23 -0
- package/dist/proxy/telemetry.d.ts.map +1 -0
- package/dist/proxy/telemetry.js +227 -0
- package/dist/proxy/telemetry.js.map +1 -0
- package/dist/status/node-status.d.ts +22 -0
- package/dist/status/node-status.d.ts.map +1 -0
- package/dist/status/node-status.js +83 -0
- package/dist/status/node-status.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
const SERVICE_CATEGORY_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
|
|
2
|
+
const MAX_PUBLIC_ADDRESS_LENGTH = 255;
|
|
3
|
+
function validatePricingLeaf(path, value, errors) {
|
|
4
|
+
if (!Number.isFinite(value.inputUsdPerMillion) || value.inputUsdPerMillion < 0) {
|
|
5
|
+
errors.push(`${path}.inputUsdPerMillion must be a non-negative finite number`);
|
|
6
|
+
}
|
|
7
|
+
if (!Number.isFinite(value.outputUsdPerMillion) || value.outputUsdPerMillion < 0) {
|
|
8
|
+
errors.push(`${path}.outputUsdPerMillion must be a non-negative finite number`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function validateHierarchicalPricing(path, pricing, errors) {
|
|
12
|
+
validatePricingLeaf(`${path}.defaults`, pricing.defaults, errors);
|
|
13
|
+
for (const [provider, providerPricing] of Object.entries(pricing.providers ?? {})) {
|
|
14
|
+
if (providerPricing.defaults) {
|
|
15
|
+
validatePricingLeaf(`${path}.providers.${provider}.defaults`, providerPricing.defaults, errors);
|
|
16
|
+
}
|
|
17
|
+
for (const [service, servicePricing] of Object.entries(providerPricing.services ?? {})) {
|
|
18
|
+
validatePricingLeaf(`${path}.providers.${provider}.services.${service}`, servicePricing, errors);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function validateSellerServiceCategories(path, categories, errors) {
|
|
23
|
+
if (!categories)
|
|
24
|
+
return;
|
|
25
|
+
for (const [provider, services] of Object.entries(categories)) {
|
|
26
|
+
for (const [service, tags] of Object.entries(services)) {
|
|
27
|
+
const servicePath = `${path}.${provider}.${service}`;
|
|
28
|
+
if (!Array.isArray(tags) || tags.length === 0) {
|
|
29
|
+
errors.push(`${servicePath} must be a non-empty string array`);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const seen = new Set();
|
|
33
|
+
for (let i = 0; i < tags.length; i += 1) {
|
|
34
|
+
const rawTag = tags[i];
|
|
35
|
+
if (typeof rawTag !== 'string') {
|
|
36
|
+
errors.push(`${servicePath}[${i}] must be a string`);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const tag = rawTag.trim().toLowerCase();
|
|
40
|
+
if (tag.length === 0) {
|
|
41
|
+
errors.push(`${servicePath}[${i}] must not be empty`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (!SERVICE_CATEGORY_PATTERN.test(tag)) {
|
|
45
|
+
errors.push(`${servicePath}[${i}] must use lowercase letters, digits, or hyphen`);
|
|
46
|
+
}
|
|
47
|
+
if (seen.has(tag)) {
|
|
48
|
+
errors.push(`${servicePath}[${i}] is duplicated`);
|
|
49
|
+
}
|
|
50
|
+
seen.add(tag);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function parsePublicAddress(value) {
|
|
56
|
+
const trimmed = value.trim();
|
|
57
|
+
if (trimmed.length === 0 || trimmed.length > MAX_PUBLIC_ADDRESS_LENGTH) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const lastColon = trimmed.lastIndexOf(':');
|
|
61
|
+
if (lastColon <= 0 || lastColon === trimmed.length - 1) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const host = trimmed.slice(0, lastColon).trim();
|
|
65
|
+
const portText = trimmed.slice(lastColon + 1);
|
|
66
|
+
if (!/^\d+$/.test(portText)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const port = Number(portText);
|
|
70
|
+
if (host.length === 0 || !Number.isInteger(port) || port < 1 || port > 65535) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return { host, port };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate the full config and return all issues.
|
|
77
|
+
*/
|
|
78
|
+
export function validateConfig(config) {
|
|
79
|
+
const errors = [];
|
|
80
|
+
validateHierarchicalPricing('seller.pricing', config.seller.pricing, errors);
|
|
81
|
+
validateSellerServiceCategories('seller.serviceCategories', config.seller.serviceCategories, errors);
|
|
82
|
+
validateHierarchicalPricing('buyer.maxPricing', config.buyer.maxPricing, errors);
|
|
83
|
+
if (!Number.isFinite(config.buyer.minPeerReputation) || config.buyer.minPeerReputation < 0 || config.buyer.minPeerReputation > 100) {
|
|
84
|
+
errors.push('buyer.minPeerReputation must be in range 0-100');
|
|
85
|
+
}
|
|
86
|
+
if (!Number.isInteger(config.buyer.proxyPort) || config.buyer.proxyPort < 1 || config.buyer.proxyPort > 65535) {
|
|
87
|
+
errors.push('buyer.proxyPort must be an integer in range 1-65535');
|
|
88
|
+
}
|
|
89
|
+
if (!Number.isInteger(config.seller.maxConcurrentBuyers) || config.seller.maxConcurrentBuyers < 1) {
|
|
90
|
+
errors.push('seller.maxConcurrentBuyers must be an integer >= 1');
|
|
91
|
+
}
|
|
92
|
+
if (!Number.isFinite(config.seller.reserveFloor) || config.seller.reserveFloor < 0) {
|
|
93
|
+
errors.push('seller.reserveFloor must be a non-negative finite number');
|
|
94
|
+
}
|
|
95
|
+
if (config.seller.agentDir !== undefined) {
|
|
96
|
+
if (typeof config.seller.agentDir === 'string') {
|
|
97
|
+
if (config.seller.agentDir.trim().length === 0) {
|
|
98
|
+
errors.push('seller.agentDir must be a non-empty string when provided');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const map = config.seller.agentDir;
|
|
103
|
+
if (Object.keys(map).length === 0) {
|
|
104
|
+
errors.push('seller.agentDir map must have at least one entry when provided');
|
|
105
|
+
}
|
|
106
|
+
for (const [svc, dir] of Object.entries(map)) {
|
|
107
|
+
if (typeof dir !== 'string' || dir.trim().length === 0) {
|
|
108
|
+
errors.push(`seller.agentDir["${svc}"] must be a non-empty string`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (config.seller.publicAddress) {
|
|
114
|
+
const raw = config.seller.publicAddress.trim();
|
|
115
|
+
if (parsePublicAddress(raw) === null) {
|
|
116
|
+
errors.push('seller.publicAddress must be in the form "host:port" with a valid port');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return errors;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Assert that config is valid. Throws with all discovered violations.
|
|
123
|
+
*/
|
|
124
|
+
export function assertValidConfig(config) {
|
|
125
|
+
const errors = validateConfig(config);
|
|
126
|
+
if (errors.length === 0)
|
|
127
|
+
return;
|
|
128
|
+
throw new Error(`Invalid config:\n- ${errors.join('\n- ')}`);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../../src/env/load-env.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import dotenv from 'dotenv';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
function applyEnvFile(filePath) {
|
|
4
|
+
dotenv.config({ path: filePath, override: false });
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Load runtime environment variables from .env files.
|
|
8
|
+
* Precedence: existing process.env > explicit env file > .env.local > .env
|
|
9
|
+
*/
|
|
10
|
+
export function loadEnvFromFiles() {
|
|
11
|
+
const explicit = process.env['ANTSEED_ENV_FILE'];
|
|
12
|
+
if (explicit) {
|
|
13
|
+
applyEnvFile(resolve(explicit));
|
|
14
|
+
}
|
|
15
|
+
applyEnvFile(resolve(process.cwd(), '.env.local'));
|
|
16
|
+
applyEnvFile(resolve(process.cwd(), '.env'));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=load-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-env.js","sourceRoot":"","sources":["../../src/env/load-env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IACnD,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AntseedProviderPlugin, AntseedRouterPlugin, PluginConfigKey } from '@antseed/node';
|
|
2
|
+
export declare function loadProviderPlugin(nameOrPackage: string): Promise<AntseedProviderPlugin>;
|
|
3
|
+
export declare function loadRouterPlugin(nameOrPackage: string): Promise<AntseedRouterPlugin>;
|
|
4
|
+
export declare function buildPluginConfig(configKeys: PluginConfigKey[], runtimeOverrides?: Record<string, string>, instanceConfig?: Record<string, string>): Record<string, string>;
|
|
5
|
+
/**
|
|
6
|
+
* Returns version info for core packages and a named plugin.
|
|
7
|
+
* Useful for startup logging.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getPackageVersions(pluginName?: string): Record<string, string>;
|
|
10
|
+
/** Map legacy package names to current names */
|
|
11
|
+
export declare const LEGACY_PACKAGE_MAP: Record<string, string>;
|
|
12
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AA0DhG,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAE9F;AAED,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAE1F;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAAE,EAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAqBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa9E;AAED,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import path, { join } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { getPluginsDir } from './manager.js';
|
|
5
|
+
import { TRUSTED_PLUGINS } from './registry.js';
|
|
6
|
+
function resolvePackageName(nameOrPackage) {
|
|
7
|
+
const legacy = LEGACY_PACKAGE_MAP[nameOrPackage];
|
|
8
|
+
if (legacy)
|
|
9
|
+
return legacy;
|
|
10
|
+
const trusted = TRUSTED_PLUGINS.find(p => p.name === nameOrPackage);
|
|
11
|
+
return trusted?.package ?? nameOrPackage;
|
|
12
|
+
}
|
|
13
|
+
async function loadPlugin(nameOrPackage, kind, methodName) {
|
|
14
|
+
const pkgName = resolvePackageName(nameOrPackage);
|
|
15
|
+
const pluginsDir = getPluginsDir();
|
|
16
|
+
const pluginPath = join(pluginsDir, 'node_modules', pkgName, 'dist', 'index.js');
|
|
17
|
+
const resolved = path.resolve(pluginPath);
|
|
18
|
+
if (!resolved.startsWith(path.resolve(pluginsDir))) {
|
|
19
|
+
throw new Error(`Invalid plugin path: ${pkgName}`);
|
|
20
|
+
}
|
|
21
|
+
let mod;
|
|
22
|
+
try {
|
|
23
|
+
mod = await import(pathToFileURL(resolved).href);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
const cause = err instanceof Error ? err.message : String(err);
|
|
27
|
+
if (err &&
|
|
28
|
+
typeof err === 'object' &&
|
|
29
|
+
'code' in err &&
|
|
30
|
+
err.code === 'ERR_MODULE_NOT_FOUND') {
|
|
31
|
+
throw new Error(`Plugin "${pkgName}" not found. Install it with:\n antseed plugin add ${pkgName}`);
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`Plugin "${pkgName}" failed to load from ${resolved}.\nCause: ${cause}`);
|
|
34
|
+
}
|
|
35
|
+
const plugin = mod.default;
|
|
36
|
+
if (!plugin || typeof plugin !== 'object' || plugin.type !== kind) {
|
|
37
|
+
throw new Error(`Plugin "${pkgName}" does not export a valid ${kind} plugin (expected default export with type: '${kind}')`);
|
|
38
|
+
}
|
|
39
|
+
if (typeof plugin[methodName] !== 'function') {
|
|
40
|
+
throw new Error(`Plugin "${pkgName}" does not implement ${methodName}()`);
|
|
41
|
+
}
|
|
42
|
+
return plugin;
|
|
43
|
+
}
|
|
44
|
+
export async function loadProviderPlugin(nameOrPackage) {
|
|
45
|
+
return loadPlugin(nameOrPackage, 'provider', 'createProvider');
|
|
46
|
+
}
|
|
47
|
+
export async function loadRouterPlugin(nameOrPackage) {
|
|
48
|
+
return loadPlugin(nameOrPackage, 'router', 'createRouter');
|
|
49
|
+
}
|
|
50
|
+
export function buildPluginConfig(configKeys, runtimeOverrides, instanceConfig) {
|
|
51
|
+
const config = {};
|
|
52
|
+
// Priority: instanceConfig (lowest) < env vars < runtime overrides (highest)
|
|
53
|
+
if (instanceConfig) {
|
|
54
|
+
Object.assign(config, instanceConfig);
|
|
55
|
+
}
|
|
56
|
+
for (const key of configKeys) {
|
|
57
|
+
const value = process.env[key.key];
|
|
58
|
+
if (value !== undefined) {
|
|
59
|
+
config[key.key] = value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (runtimeOverrides) {
|
|
63
|
+
Object.assign(config, runtimeOverrides);
|
|
64
|
+
}
|
|
65
|
+
return config;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Read the installed version of a package from the plugins directory.
|
|
69
|
+
* Returns the version string or null if not found.
|
|
70
|
+
*/
|
|
71
|
+
function readPluginPackageVersion(pkgName) {
|
|
72
|
+
try {
|
|
73
|
+
const pluginsDir = getPluginsDir();
|
|
74
|
+
const pkgJsonPath = join(pluginsDir, 'node_modules', pkgName, 'package.json');
|
|
75
|
+
const resolved = path.resolve(pkgJsonPath);
|
|
76
|
+
if (!resolved.startsWith(path.resolve(pluginsDir))) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const raw = readFileSync(resolved, 'utf8');
|
|
80
|
+
return JSON.parse(raw).version ?? null;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns version info for core packages and a named plugin.
|
|
88
|
+
* Useful for startup logging.
|
|
89
|
+
*/
|
|
90
|
+
export function getPackageVersions(pluginName) {
|
|
91
|
+
const versions = {};
|
|
92
|
+
const corePackages = ['@antseed/node', '@antseed/provider-core', '@antseed/router-core'];
|
|
93
|
+
for (const pkg of corePackages) {
|
|
94
|
+
const v = readPluginPackageVersion(pkg);
|
|
95
|
+
if (v)
|
|
96
|
+
versions[pkg] = v;
|
|
97
|
+
}
|
|
98
|
+
if (pluginName) {
|
|
99
|
+
const pkgName = resolvePackageName(pluginName);
|
|
100
|
+
const v = readPluginPackageVersion(pkgName);
|
|
101
|
+
if (v)
|
|
102
|
+
versions[pkgName] = v;
|
|
103
|
+
}
|
|
104
|
+
return versions;
|
|
105
|
+
}
|
|
106
|
+
/** Map legacy package names to current names */
|
|
107
|
+
export const LEGACY_PACKAGE_MAP = {
|
|
108
|
+
'antseed-provider-anthropic': '@antseed/provider-anthropic',
|
|
109
|
+
'antseed-router-claude-code': '@antseed/router-local',
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const PLUGINS_DIR: string;
|
|
2
|
+
export declare function getPluginsDir(): string;
|
|
3
|
+
export interface InstalledPlugin {
|
|
4
|
+
name: string;
|
|
5
|
+
package: string;
|
|
6
|
+
version: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function installPlugin(packageName: string): Promise<void>;
|
|
9
|
+
export declare function removePlugin(packageName: string): Promise<void>;
|
|
10
|
+
export declare function listInstalledPlugins(): Promise<InstalledPlugin[]>;
|
|
11
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW,QAAyC,CAAA;AAOjE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAiBD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAcvE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { mkdir, readFile, writeFile, access } from 'node:fs/promises';
|
|
4
|
+
import { constants, existsSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
const execFileAsync = promisify(execFile);
|
|
8
|
+
export const PLUGINS_DIR = join(homedir(), '.antseed', 'plugins');
|
|
9
|
+
function resolvePluginsDir() {
|
|
10
|
+
if (existsSync(PLUGINS_DIR))
|
|
11
|
+
return PLUGINS_DIR;
|
|
12
|
+
return PLUGINS_DIR;
|
|
13
|
+
}
|
|
14
|
+
export function getPluginsDir() {
|
|
15
|
+
return resolvePluginsDir();
|
|
16
|
+
}
|
|
17
|
+
async function ensurePluginsDir() {
|
|
18
|
+
const pluginsDir = resolvePluginsDir();
|
|
19
|
+
const pluginsPackageJson = join(pluginsDir, 'package.json');
|
|
20
|
+
await mkdir(pluginsDir, { recursive: true });
|
|
21
|
+
try {
|
|
22
|
+
await access(pluginsPackageJson, constants.R_OK);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
await writeFile(pluginsPackageJson, JSON.stringify({ name: 'antseed-plugins', version: '1.0.0', private: true, dependencies: {} }, null, 2), 'utf-8');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export async function installPlugin(packageName) {
|
|
29
|
+
await ensurePluginsDir();
|
|
30
|
+
await execFileAsync('npm', ['install', '--ignore-scripts', packageName], { cwd: getPluginsDir() });
|
|
31
|
+
}
|
|
32
|
+
export async function removePlugin(packageName) {
|
|
33
|
+
await ensurePluginsDir();
|
|
34
|
+
await execFileAsync('npm', ['uninstall', packageName], { cwd: getPluginsDir() });
|
|
35
|
+
}
|
|
36
|
+
export async function listInstalledPlugins() {
|
|
37
|
+
await ensurePluginsDir();
|
|
38
|
+
try {
|
|
39
|
+
const raw = await readFile(join(getPluginsDir(), 'package.json'), 'utf-8');
|
|
40
|
+
const pkg = JSON.parse(raw);
|
|
41
|
+
const deps = pkg.dependencies ?? {};
|
|
42
|
+
return Object.entries(deps).map(([pkgName, version]) => ({
|
|
43
|
+
name: pkgName,
|
|
44
|
+
package: pkgName,
|
|
45
|
+
version: version,
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;AAEjE,SAAS,iBAAiB;IACxB,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAA;IAC/C,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,iBAAiB,EAAE,CAAA;AAC5B,CAAC;AAQD,KAAK,UAAU,gBAAgB;IAC7B,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAA;IACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IAC3D,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CACb,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACvG,OAAO,CACR,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,MAAM,gBAAgB,EAAE,CAAA;IACxB,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB;IACpD,MAAM,gBAAgB,EAAE,CAAA;IACxB,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,gBAAgB,EAAE,CAAA;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8C,CAAA;QACxE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAA;QACnC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EA2C1C,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const TRUSTED_PLUGINS = [
|
|
2
|
+
{
|
|
3
|
+
name: 'anthropic',
|
|
4
|
+
type: 'provider',
|
|
5
|
+
description: 'Anthropic API provider (API key)',
|
|
6
|
+
package: '@antseed/provider-anthropic',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'claude-code',
|
|
10
|
+
type: 'provider',
|
|
11
|
+
description: 'Claude Code keychain provider (testing only)',
|
|
12
|
+
package: '@antseed/provider-claude-code',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'claude-oauth',
|
|
16
|
+
type: 'provider',
|
|
17
|
+
description: 'Claude OAuth provider (testing only)',
|
|
18
|
+
package: '@antseed/provider-claude-oauth',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'openai',
|
|
22
|
+
type: 'provider',
|
|
23
|
+
description: 'OpenAI-compatible provider (OpenAI, Together, OpenRouter, API key)',
|
|
24
|
+
package: '@antseed/provider-openai',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'openai-responses',
|
|
28
|
+
type: 'provider',
|
|
29
|
+
description: 'OpenAI Responses provider via Codex auth (testing only)',
|
|
30
|
+
package: '@antseed/provider-openai-responses',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'local-llm',
|
|
34
|
+
type: 'provider',
|
|
35
|
+
description: 'Local LLM provider (Ollama, llama.cpp)',
|
|
36
|
+
package: '@antseed/provider-local-llm',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'local',
|
|
40
|
+
type: 'router',
|
|
41
|
+
description: 'Local router for Claude Code, Codex',
|
|
42
|
+
package: '@antseed/router-local',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,6BAA6B;KACvC;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,+BAA+B;KACzC;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,gCAAgC;KAC1C;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,0BAA0B;KACpC;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,yDAAyD;QACtE,OAAO,EAAE,oCAAoC;KAC9C;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,6BAA6B;KACvC;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,uBAAuB;KACjC;CACF,CAAA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { AntseedNode } from '@antseed/node';
|
|
2
|
+
export { selectCandidatePeersForRouting, type CandidatePeerRouteSelection } from './routing.js';
|
|
3
|
+
export { rewriteServiceInBody } from './request-utils.js';
|
|
4
|
+
export interface BuyerProxyConfig {
|
|
5
|
+
port: number;
|
|
6
|
+
node: AntseedNode;
|
|
7
|
+
/** How often to refresh the peer list from DHT in the background (ms). Default: 300000 (5 min) */
|
|
8
|
+
backgroundRefreshIntervalMs?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Max age for the in-memory peer cache before it is treated as stale (ms).
|
|
11
|
+
* Stale caches can still be used for routing while background refresh repopulates.
|
|
12
|
+
* Default: 30000 (30s).
|
|
13
|
+
*/
|
|
14
|
+
peerCacheTtlMs?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Pin all requests to a specific peer ID for this session.
|
|
17
|
+
* The router is bypassed; the named peer is used directly if it is available
|
|
18
|
+
* and protocol-compatible. A 502 is returned if the peer cannot be reached.
|
|
19
|
+
*/
|
|
20
|
+
pinnedPeerId?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Pin all requests to a specific service ID for this session.
|
|
23
|
+
* Overrides the service field in the request body before routing and forwarding.
|
|
24
|
+
* Can be updated at runtime via `antseed connection set --service`.
|
|
25
|
+
*/
|
|
26
|
+
pinnedService?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Local HTTP proxy that forwards requests to P2P sellers.
|
|
30
|
+
*
|
|
31
|
+
* Tools like Claude CLI set ANTHROPIC_BASE_URL=http://localhost:8377
|
|
32
|
+
* and the proxy transparently routes their API calls through the
|
|
33
|
+
* Antseed P2P network.
|
|
34
|
+
*/
|
|
35
|
+
export declare class BuyerProxy {
|
|
36
|
+
private readonly _server;
|
|
37
|
+
private readonly _node;
|
|
38
|
+
private readonly _port;
|
|
39
|
+
private readonly _bgRefreshIntervalMs;
|
|
40
|
+
private readonly _peerCacheTtlMs;
|
|
41
|
+
private _pinnedPeer;
|
|
42
|
+
private _pinnedService;
|
|
43
|
+
private _stateFileWatcher;
|
|
44
|
+
private _stateWatchDebounce;
|
|
45
|
+
private _stateWriteChain;
|
|
46
|
+
private _cachedPeers;
|
|
47
|
+
private _cacheLastUpdatedAtMs;
|
|
48
|
+
private _cacheMutationEpoch;
|
|
49
|
+
private _peerRefreshPromise;
|
|
50
|
+
private _lastStaleCacheLogAtMs;
|
|
51
|
+
private _bgRefreshHandle;
|
|
52
|
+
private _lastSuccessfulPeerId;
|
|
53
|
+
private _lastSuccessfulPeerByRouteKey;
|
|
54
|
+
constructor(config: BuyerProxyConfig);
|
|
55
|
+
start(): Promise<void>;
|
|
56
|
+
stop(): Promise<void>;
|
|
57
|
+
private _watchStateFile;
|
|
58
|
+
private _reloadSessionOverrides;
|
|
59
|
+
/** Serialised read-modify-write to buyer.state.json. Returns the queued write promise. */
|
|
60
|
+
private _mergeStateFile;
|
|
61
|
+
private _writeStateFile;
|
|
62
|
+
private _startBackgroundRefresh;
|
|
63
|
+
private _replacePeers;
|
|
64
|
+
private _persistPeersToState;
|
|
65
|
+
private _evictPeer;
|
|
66
|
+
private _rememberSuccessfulPeer;
|
|
67
|
+
private _forgetSuccessfulPeer;
|
|
68
|
+
private _buildRouteKey;
|
|
69
|
+
private _discoverPeersFromNetwork;
|
|
70
|
+
private _refreshPeersNow;
|
|
71
|
+
private _getPeers;
|
|
72
|
+
private _formatPeerSelectionDiagnostics;
|
|
73
|
+
private _handleControlPlane;
|
|
74
|
+
private _handleRequest;
|
|
75
|
+
/**
|
|
76
|
+
* Dispatch a request to a specific peer. Returns `{ done: true }` if the response
|
|
77
|
+
* was sent to the client (success or non-retryable error), or retry info if the
|
|
78
|
+
* caller should try another peer.
|
|
79
|
+
*/
|
|
80
|
+
private _dispatchToPeer;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=buyer-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyer-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/buyer-proxy.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,WAAW,EAOZ,MAAM,eAAe,CAAA;AA2CtB,OAAO,EAAE,8BAA8B,EAAE,KAAK,2BAA2B,EAAE,MAAM,cAAc,CAAA;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,WAAW,CAAA;IACjB,kGAAkG;IAClG,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAgHD;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,mBAAmB,CAA6C;IAExE,OAAO,CAAC,gBAAgB,CAAmC;IAE3D,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,qBAAqB,CAAI;IACjC,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,sBAAsB,CAAI;IAClC,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,6BAA6B,CAA4B;gBAErD,MAAM,EAAE,gBAAgB;IAkB9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,OAAO,CAAC,eAAe;YAiBT,uBAAuB;IAkBrC,0FAA0F;IAC1F,OAAO,CAAC,eAAe;YAuBT,eAAe;IAe7B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,cAAc;YA0BR,yBAAyB;YASzB,gBAAgB;YA+BhB,SAAS;IA2BvB,OAAO,CAAC,+BAA+B;YAuBzB,mBAAmB;YA+FnB,cAAc;IAgV5B;;;;OAIG;YACW,eAAe;CA4T9B"}
|