@antseed/cli 0.1.190 → 0.1.192
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/cli/commands/seller/start.d.ts.map +1 -1
- package/dist/cli/commands/seller/start.js +2 -1
- package/dist/cli/commands/seller/start.js.map +1 -1
- package/dist/cli/index.js +3 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/config/service-metadata.test.js +4 -0
- package/dist/config/service-metadata.test.js.map +1 -1
- package/dist/gateway/gateway-policy.test.js +19 -0
- package/dist/gateway/gateway-policy.test.js.map +1 -1
- package/dist/gateway/routing-through-gateway.test.d.ts +2 -0
- package/dist/gateway/routing-through-gateway.test.d.ts.map +1 -0
- package/dist/gateway/routing-through-gateway.test.js +177 -0
- package/dist/gateway/routing-through-gateway.test.js.map +1 -0
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +12 -0
- package/dist/plugins/registry.js.map +1 -1
- package/dist/proxy/buyer-proxy.d.ts +62 -4
- package/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +514 -120
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/dist/proxy/buyer-proxy.test.js +1347 -5
- package/dist/proxy/buyer-proxy.test.js.map +1 -1
- package/dist/proxy/conversation-store.d.ts +12 -0
- package/dist/proxy/conversation-store.d.ts.map +1 -1
- package/dist/proxy/conversation-store.js +30 -0
- package/dist/proxy/conversation-store.js.map +1 -1
- package/dist/proxy/conversation-store.test.js +69 -1
- package/dist/proxy/conversation-store.test.js.map +1 -1
- package/dist/proxy/gateway-policy.test.js +110 -0
- package/dist/proxy/gateway-policy.test.js.map +1 -1
- package/dist/proxy/network-models.d.ts +27 -1
- package/dist/proxy/network-models.d.ts.map +1 -1
- package/dist/proxy/network-models.js +2 -0
- package/dist/proxy/network-models.js.map +1 -1
- package/dist/proxy/request-utils.d.ts +21 -1
- package/dist/proxy/request-utils.d.ts.map +1 -1
- package/dist/proxy/request-utils.js +24 -1
- package/dist/proxy/request-utils.js.map +1 -1
- package/dist/proxy/route-policy.d.ts +7 -0
- package/dist/proxy/route-policy.d.ts.map +1 -1
- package/dist/proxy/route-policy.js +10 -0
- package/dist/proxy/route-policy.js.map +1 -1
- package/dist/proxy/router-execution.d.ts +63 -0
- package/dist/proxy/router-execution.d.ts.map +1 -0
- package/dist/proxy/router-execution.js +222 -0
- package/dist/proxy/router-execution.js.map +1 -0
- package/dist/proxy/router-execution.test.d.ts +2 -0
- package/dist/proxy/router-execution.test.d.ts.map +1 -0
- package/dist/proxy/router-execution.test.js +269 -0
- package/dist/proxy/router-execution.test.js.map +1 -0
- package/dist/proxy/routing-services.d.ts +48 -0
- package/dist/proxy/routing-services.d.ts.map +1 -0
- package/dist/proxy/routing-services.js +66 -0
- package/dist/proxy/routing-services.js.map +1 -0
- package/dist/proxy/routing-services.test.d.ts +2 -0
- package/dist/proxy/routing-services.test.d.ts.map +1 -0
- package/dist/proxy/routing-services.test.js +95 -0
- package/dist/proxy/routing-services.test.js.map +1 -0
- package/dist/proxy/routing-usage.d.ts +4 -0
- package/dist/proxy/routing-usage.d.ts.map +1 -0
- package/dist/proxy/routing-usage.js +19 -0
- package/dist/proxy/routing-usage.js.map +1 -0
- package/dist/proxy/routing-usage.test.d.ts +2 -0
- package/dist/proxy/routing-usage.test.d.ts.map +1 -0
- package/dist/proxy/routing-usage.test.js +32 -0
- package/dist/proxy/routing-usage.test.js.map +1 -0
- package/package.json +10 -8
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A routing service used through the gateway, end to end: a real gateway in
|
|
3
|
+
* front of a real buyer proxy, with only the network faked. The halves are
|
|
4
|
+
* tested on their own elsewhere; this checks that they fit.
|
|
5
|
+
*/
|
|
6
|
+
import assert from 'node:assert/strict';
|
|
7
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import { tmpdir } from 'node:os';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { test } from 'node:test';
|
|
11
|
+
import { BuyerProxy } from '../proxy/buyer-proxy.js';
|
|
12
|
+
import { GATEWAY_CONTROL_SECRET_FILE } from '../routing-policy/policy.js';
|
|
13
|
+
import { GatewayAccounting } from './accounting.js';
|
|
14
|
+
import { GatewayServer } from './server.js';
|
|
15
|
+
import { SpendFeedPoller } from './spend-feed.js';
|
|
16
|
+
import { GatewayStore } from './store.js';
|
|
17
|
+
const SECRET = 'e'.repeat(64);
|
|
18
|
+
const NO_LIMITS = { daily: null, weekly: null, monthly: null, total: null };
|
|
19
|
+
const RANKING_USDC = 1_000;
|
|
20
|
+
const INFERENCE_USDC = 25_000;
|
|
21
|
+
function seller(seed, trust) {
|
|
22
|
+
return {
|
|
23
|
+
peerId: seed.repeat(40),
|
|
24
|
+
lastSeen: Date.now(),
|
|
25
|
+
providers: ['openai'],
|
|
26
|
+
onChainReputationScore: trust,
|
|
27
|
+
displayName: `Test seller ${seed}`,
|
|
28
|
+
providerPricing: { openai: { defaults: { inputUsdPerMillion: 1, outputUsdPerMillion: 1 } } },
|
|
29
|
+
providerServiceApiProtocols: { openai: { services: { 'gpt-5': ['openai-chat-completions'] } } },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function routingService(seed) {
|
|
33
|
+
return {
|
|
34
|
+
peerId: seed.repeat(40),
|
|
35
|
+
lastSeen: Date.now(),
|
|
36
|
+
providers: ['alpha'],
|
|
37
|
+
onChainReputationScore: 90,
|
|
38
|
+
metadata: {
|
|
39
|
+
peerId: seed.repeat(40), version: 12, timestamp: Date.now(), signature: '', region: 'test',
|
|
40
|
+
providers: [{ provider: 'alpha', services: ['alpha-route'], maxConcurrency: 1, currentLoad: 0,
|
|
41
|
+
defaultPricing: { inputUsdPerMillion: 0, outputUsdPerMillion: 0 },
|
|
42
|
+
serviceApiProtocols: { 'alpha-route': ['irp-suggest'] },
|
|
43
|
+
serviceUnitBillingModels: { 'alpha-route': { 'irp-suggest': { version: 1, components: [{ unit: 'completed_requests', priceUsd: 0.001 }] } } },
|
|
44
|
+
}],
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const first = seller('a', 80);
|
|
49
|
+
const second = seller('b', 85);
|
|
50
|
+
const router = routingService('d');
|
|
51
|
+
const ROUTER_MODEL = `${router.peerId}@alpha-route`;
|
|
52
|
+
async function setup(t) {
|
|
53
|
+
const dir = mkdtempSync(join(tmpdir(), 'antseed-gw-routing-'));
|
|
54
|
+
mkdirSync(join(dir, 'buyer', 'gateway'), { recursive: true });
|
|
55
|
+
writeFileSync(join(dir, 'buyer', GATEWAY_CONTROL_SECRET_FILE), `${SECRET}\n`, { mode: 0o600 });
|
|
56
|
+
// The network: every send is charged and recorded against its request, like a paid seller.
|
|
57
|
+
const sent = [];
|
|
58
|
+
const rankedCandidates = [];
|
|
59
|
+
let proxy;
|
|
60
|
+
const node = {
|
|
61
|
+
router: { allowsPeerForPolicy: () => true, onResult: () => { } },
|
|
62
|
+
buyerIdentities: () => [{ name: 'default', address: '0x' + '1'.repeat(40) }],
|
|
63
|
+
sendRequest: async (peer, request) => {
|
|
64
|
+
let body = null;
|
|
65
|
+
try {
|
|
66
|
+
body = JSON.parse(Buffer.from(request.body).toString('utf8'));
|
|
67
|
+
}
|
|
68
|
+
catch { /* the ranking body is not inspected */ }
|
|
69
|
+
sent.push({ peerId: peer.peerId, body });
|
|
70
|
+
proxy._spendAttribution.record({
|
|
71
|
+
requestId: request.requestId, sellerPeerId: peer.peerId,
|
|
72
|
+
amountUsdc: String(peer.peerId === router.peerId ? RANKING_USDC : INFERENCE_USDC),
|
|
73
|
+
inputTokens: '10', cachedInputTokens: '0', outputTokens: '5', outputImages: '0',
|
|
74
|
+
});
|
|
75
|
+
return { requestId: request.requestId, statusCode: 200, headers: { 'content-type': 'application/json' }, body: Buffer.from('{"choices":[]}') };
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
// The routing service: ranks the candidates it is sent, best trust first, and is paid through the buyer.
|
|
79
|
+
const modelRoutingClient = {
|
|
80
|
+
listModels: async () => [{ id: 'gpt-5' }],
|
|
81
|
+
async selectRoute(request, peers, context) {
|
|
82
|
+
const candidates = context.candidates;
|
|
83
|
+
rankedCandidates.push(candidates.map((candidate) => candidate.peerId));
|
|
84
|
+
await context.sendRequest(peers.find((peer) => peer.peerId === router.peerId), { requestId: `${request.requestId}-rank`, method: 'POST', path: '/v1/routing/rank', headers: {}, body: new Uint8Array() });
|
|
85
|
+
const byTrust = peers.filter((peer) => candidates.some((candidate) => candidate.peerId === peer.peerId))
|
|
86
|
+
.sort((a, b) => (b.onChainReputationScore ?? 0) - (a.onChainReputationScore ?? 0));
|
|
87
|
+
const routes = byTrust.map((peer) => ({ serviceId: 'gpt-5', peerId: peer.peerId, provider: 'openai' }));
|
|
88
|
+
assert.equal(context.acceptRecommendations(routes), true);
|
|
89
|
+
return routes;
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
proxy = new BuyerProxy({ port: 0, dataDir: join(dir, 'buyer'), node: node, modelRoutingClient: modelRoutingClient });
|
|
93
|
+
proxy._getPeers = async () => [first, second, router];
|
|
94
|
+
proxy._cacheLastUpdatedAtMs = Date.now();
|
|
95
|
+
proxy._mergeStateFile = async () => { };
|
|
96
|
+
const buyerServer = proxy._server;
|
|
97
|
+
await new Promise((resolve) => buyerServer.listen(0, '127.0.0.1', resolve));
|
|
98
|
+
const buyerPort = buyerServer.address().port;
|
|
99
|
+
const store = new GatewayStore(join(dir, 'gateway'));
|
|
100
|
+
const accounting = new GatewayAccounting(store, { holdUsdc: 100_000, settleGraceMs: 20 });
|
|
101
|
+
const feed = new SpendFeedPoller({ buyerPort, controlSecret: SECRET, onPage: (page) => { accounting.ingest(page.bootId, page.events); }, intervalMs: 60_000 });
|
|
102
|
+
const gateway = new GatewayServer({
|
|
103
|
+
store, accounting, buyerPort, controlSecret: SECRET, console: null,
|
|
104
|
+
identityAddress: async () => null, spendFeedState: () => feed.state, refreshSpendFeed: () => feed.pollOnce(),
|
|
105
|
+
});
|
|
106
|
+
const port = await gateway.start();
|
|
107
|
+
t.after(async () => {
|
|
108
|
+
await gateway.stop();
|
|
109
|
+
accounting.dispose();
|
|
110
|
+
await proxy._conversations.flush();
|
|
111
|
+
await new Promise((resolve) => buyerServer.close(() => resolve()));
|
|
112
|
+
store.close();
|
|
113
|
+
rmSync(dir, { recursive: true, force: true });
|
|
114
|
+
});
|
|
115
|
+
const call = async (secret, path, body) => {
|
|
116
|
+
const res = await fetch(`http://127.0.0.1:${port}${path}`, {
|
|
117
|
+
method: body === undefined ? 'GET' : 'POST',
|
|
118
|
+
headers: { authorization: `Bearer ${secret}`, 'content-type': 'application/json' },
|
|
119
|
+
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
120
|
+
});
|
|
121
|
+
const text = await res.text();
|
|
122
|
+
let json = null;
|
|
123
|
+
try {
|
|
124
|
+
json = JSON.parse(text);
|
|
125
|
+
}
|
|
126
|
+
catch { /* not json */ }
|
|
127
|
+
return { status: res.status, json, text };
|
|
128
|
+
};
|
|
129
|
+
return { store, feed, call, sent, rankedCandidates };
|
|
130
|
+
}
|
|
131
|
+
const chatBody = { model: ROUTER_MODEL, messages: [{ role: 'user', content: 'Hello' }], routing: { cost_quality_tradeoff: 7 } };
|
|
132
|
+
test('a key naming a routing service gets an answer from the seller it picked, among the sellers the key allows', async (t) => {
|
|
133
|
+
const ctx = await setup(t);
|
|
134
|
+
const { secret, key } = ctx.store.createKey({ label: 'team', limits: NO_LIMITS, expiresAt: null, routingPolicy: { blockedPeerIds: [second.peerId] } });
|
|
135
|
+
const res = await ctx.call(secret, '/v1/chat/completions', chatBody);
|
|
136
|
+
assert.equal(res.status, 200, res.text);
|
|
137
|
+
assert.deepEqual(ctx.rankedCandidates, [[first.peerId]], 'the router only ranks sellers the key allows');
|
|
138
|
+
assert.deepEqual(ctx.sent.map((entry) => entry.peerId), [router.peerId, first.peerId]);
|
|
139
|
+
const inference = ctx.sent[1].body;
|
|
140
|
+
assert.equal(inference['routing'], undefined, 'routing options never reach the seller');
|
|
141
|
+
assert.equal(inference['model'], 'gpt-5');
|
|
142
|
+
const [row] = ctx.store.listRequests({ keyId: key.id });
|
|
143
|
+
assert.equal(row.status, 200);
|
|
144
|
+
assert.equal(row.model, 'alpha-route');
|
|
145
|
+
assert.equal(row.sellerPeerId, first.peerId, 'the log names the seller that answered');
|
|
146
|
+
// Both the ranking and the inference are charged to the key.
|
|
147
|
+
await ctx.feed.pollOnce();
|
|
148
|
+
assert.equal(ctx.store.keyUsageSummaries([key.id], 0).get(key.id).spentUsdc, RANKING_USDC + INFERENCE_USDC);
|
|
149
|
+
});
|
|
150
|
+
test('a key limited to other models cannot use a routing service, and no ranking is bought', async (t) => {
|
|
151
|
+
const ctx = await setup(t);
|
|
152
|
+
const limited = ctx.store.createKey({ label: 'limited', limits: NO_LIMITS, expiresAt: null, routingPolicy: { allowedModels: ['gpt-5'] } });
|
|
153
|
+
const res = await ctx.call(limited.secret, '/v1/chat/completions', chatBody);
|
|
154
|
+
assert.equal(res.status, 403);
|
|
155
|
+
assert.equal(res.json.error.code, 'model_not_allowed');
|
|
156
|
+
assert.deepEqual(ctx.sent, []);
|
|
157
|
+
const routerAllowed = ctx.store.createKey({ label: 'router', limits: NO_LIMITS, expiresAt: null, routingPolicy: { allowedModels: ['alpha-route', 'gpt-5'] } });
|
|
158
|
+
assert.equal((await ctx.call(routerAllowed.secret, '/v1/chat/completions', chatBody)).status, 200);
|
|
159
|
+
});
|
|
160
|
+
test('a key whose policy blocks the routing service is refused before any ranking is bought', async (t) => {
|
|
161
|
+
const ctx = await setup(t);
|
|
162
|
+
const blocked = ctx.store.createKey({ label: 'blocked', limits: NO_LIMITS, expiresAt: null, routingPolicy: { blockedPeerIds: [router.peerId] } });
|
|
163
|
+
const res = await ctx.call(blocked.secret, '/v1/chat/completions', chatBody);
|
|
164
|
+
assert.equal(res.status, 403);
|
|
165
|
+
assert.equal(res.json.error.code, 'peer_not_allowed');
|
|
166
|
+
assert.deepEqual(ctx.sent, []);
|
|
167
|
+
});
|
|
168
|
+
test('/v1/models?type=router through a key lists the routers that key may use', async (t) => {
|
|
169
|
+
const ctx = await setup(t);
|
|
170
|
+
const open = ctx.store.createKey({ label: 'open', limits: NO_LIMITS, expiresAt: null });
|
|
171
|
+
const listed = await ctx.call(open.secret, '/v1/models?type=router');
|
|
172
|
+
assert.equal(listed.status, 200);
|
|
173
|
+
assert.deepEqual(listed.json.data.map((entry) => [entry.id, entry.peers[0].model]), [['alpha-route', ROUTER_MODEL]]);
|
|
174
|
+
const limited = ctx.store.createKey({ label: 'limited', limits: NO_LIMITS, expiresAt: null, routingPolicy: { allowedModels: ['gpt-5'] } });
|
|
175
|
+
assert.deepEqual((await ctx.call(limited.secret, '/v1/models?type=router')).json.data, []);
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=routing-through-gateway.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-through-gateway.test.js","sourceRoot":"","sources":["../../src/gateway/routing-through-gateway.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,GAAG,UAAU,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,wBAAwB,EAAE,aAAa,
|
|
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,GAAG,UAAU,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,wBAAwB,EAAE,aAAa,EAyDnD,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,EAOjD,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,aAAa,EAQnD,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EAI1C,CAAA;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAGlE"}
|
package/dist/plugins/registry.js
CHANGED
|
@@ -43,6 +43,18 @@ export const TRUSTED_PROVIDER_PLUGINS = [
|
|
|
43
43
|
description: 'TypeSafe System One decision-model provider (API key)',
|
|
44
44
|
package: '@antseed/provider-typesafe',
|
|
45
45
|
},
|
|
46
|
+
{
|
|
47
|
+
name: 'irp-router',
|
|
48
|
+
type: 'provider',
|
|
49
|
+
description: 'IRP routing service backed by any Inference Routing Protocol router (URL + optional key)',
|
|
50
|
+
package: '@antseed/provider-irp-router',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'free-model-router',
|
|
54
|
+
type: 'provider',
|
|
55
|
+
description: 'IRP routing service that ranks the best free models among a buyer\'s candidates',
|
|
56
|
+
package: '@antseed/provider-free-model-router',
|
|
57
|
+
},
|
|
46
58
|
];
|
|
47
59
|
export const TRUSTED_ROUTER_PLUGINS = [
|
|
48
60
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,gCAAgC,EAAE;IACtH,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iCAAiC,EAAE,OAAO,EAAE,6BAA6B,EAAE;IAC/H;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,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,4BAA4B;KACtC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,uBAAuB;KACjC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,OAAO;KACjB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,GAAG,wBAAwB;IAC3B,GAAG,sBAAsB;IACzB,GAAG,wBAAwB;CAC5B,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IAC/E,OAAO,OAAO,EAAE,OAAO,IAAI,aAAa,CAAA;AAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,gCAAgC,EAAE;IACtH,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iCAAiC,EAAE,OAAO,EAAE,6BAA6B,EAAE;IAC/H;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,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,4BAA4B;KACtC;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0FAA0F;QACvG,OAAO,EAAE,8BAA8B;KACxC;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,iFAAiF;QAC9F,OAAO,EAAE,qCAAqC;KAC/C;CACF,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,uBAAuB;KACjC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,OAAO;KACjB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,GAAG,wBAAwB;IAC3B,GAAG,sBAAsB;IACzB,GAAG,wBAAwB;CAC5B,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IAC/E,OAAO,OAAO,EAAE,OAAO,IAAI,aAAa,CAAA;AAC1C,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { BuyerIdentityLoader } from '../buyer-identities/loader.js';
|
|
|
3
3
|
import { type DepositWatcher } from './deposit-watcher.js';
|
|
4
4
|
import { type DepositLogEntry } from './deposit-log.js';
|
|
5
5
|
import { type VerifierPolicy, type SellerReach } from '../plugins/verifier.js';
|
|
6
|
+
import { type ModelRoutingClientApi } from '@antseed/router-core';
|
|
6
7
|
export { selectCandidatePeersForRouting, type CandidatePeerRouteSelection } from './routing.js';
|
|
7
8
|
export { parsePeerPinnedService, rewritePeerPinnedServiceInBody, substituteRoutedModelAlias, ROUTED_MODEL_ALIAS } from './request-utils.js';
|
|
8
9
|
/**
|
|
@@ -13,6 +14,8 @@ export { parsePeerPinnedService, rewritePeerPinnedServiceInBody, substituteRoute
|
|
|
13
14
|
*/
|
|
14
15
|
export type DepositWatcherAbsenceReason = 'external-daemon' | 'payments-disabled' | 'no-deposit-relay' | 'identity-not-watched';
|
|
15
16
|
export interface BuyerProxyConfig {
|
|
17
|
+
/** Test seam; production uses the protocol-neutral routing client, which picks an adapter per routing protocol. */
|
|
18
|
+
modelRoutingClient?: ModelRoutingClientApi;
|
|
16
19
|
port: number;
|
|
17
20
|
node: AntseedNode;
|
|
18
21
|
/** Data directory used to persist buyer.state.json (discovered peers, session peer pin). */
|
|
@@ -147,12 +150,14 @@ export declare class BuyerProxy {
|
|
|
147
150
|
private _configFileWatching;
|
|
148
151
|
private _pinnedPeer;
|
|
149
152
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
* selection) and persisted in buyer.state.json like the session peer pin.
|
|
153
|
+
* Default for the `antseed` model alias: an explicit model route (`model`) or an exact
|
|
154
|
+
* routing service (`router`). At most one is set. Set via `POST /_antseed/route` and
|
|
155
|
+
* persisted in buyer.state.json.
|
|
154
156
|
*/
|
|
155
157
|
private _defaultRoutedModel;
|
|
158
|
+
private _defaultRouter;
|
|
159
|
+
private readonly _routingModels;
|
|
160
|
+
private readonly _modelRoutingClient;
|
|
156
161
|
private _conversations;
|
|
157
162
|
/**
|
|
158
163
|
* Wall-clock of the last model-request activity (dispatch or streamed
|
|
@@ -359,6 +364,17 @@ export declare class BuyerProxy {
|
|
|
359
364
|
private _hydratePeersFromStateFile;
|
|
360
365
|
stop(): Promise<void>;
|
|
361
366
|
private _watchStateFile;
|
|
367
|
+
private _validateRouterSelection;
|
|
368
|
+
/** Parses the `router` field of `POST /_antseed/route` (`{ service, options?, allowedModels? }`). */
|
|
369
|
+
private _parseDefaultRouter;
|
|
370
|
+
/**
|
|
371
|
+
* Check a router selection's options against the protocol its router advertises, when the
|
|
372
|
+
* router is in the peer cache; throws `InvalidRouterOptionsError`. An unknown router is
|
|
373
|
+
* checked again before each ranking.
|
|
374
|
+
*/
|
|
375
|
+
private _checkRouterOptions;
|
|
376
|
+
/** The default router in its wire form, without the internal `kind` tag. */
|
|
377
|
+
private get _defaultRouterJson();
|
|
362
378
|
private _reloadSessionOverrides;
|
|
363
379
|
private _watchConfigFile;
|
|
364
380
|
private _reloadRoutingPreferences;
|
|
@@ -441,6 +457,14 @@ export declare class BuyerProxy {
|
|
|
441
457
|
* `buyer start` recognizing this as an AntSeed proxy.
|
|
442
458
|
*/
|
|
443
459
|
private _handleNetworkModels;
|
|
460
|
+
/**
|
|
461
|
+
* Routing services on the network, one entry per service id with each
|
|
462
|
+
* router peer offering it. A router is listed only when a request could pay
|
|
463
|
+
* it (see `_routerExclusionReasons`), and under a gateway policy its models
|
|
464
|
+
* are cut to the ones the policy allows. Model lists are free calls, cached
|
|
465
|
+
* per router.
|
|
466
|
+
*/
|
|
467
|
+
private _networkRouters;
|
|
444
468
|
/**
|
|
445
469
|
* Whether a request under the gateway's policy could use this offer, by
|
|
446
470
|
* the checks that judge a pinned `peer@model`: the model allow list, the
|
|
@@ -448,6 +472,40 @@ export declare class BuyerProxy {
|
|
|
448
472
|
*/
|
|
449
473
|
private _policyAllowsOffer;
|
|
450
474
|
private _handleRequest;
|
|
475
|
+
/**
|
|
476
|
+
* Buy ranked recommendations, then send each one through the normal inference path
|
|
477
|
+
* until one succeeds. A failed exact peer falls back to the next recommendation.
|
|
478
|
+
*/
|
|
479
|
+
private _dispatchViaModelRouter;
|
|
480
|
+
/**
|
|
481
|
+
* The router selection a `<peerId>@<serviceId>` model names, when that
|
|
482
|
+
* peer's routing service is `<serviceId>`. A peer missing from the cache
|
|
483
|
+
* gets one refresh first, so a router that just came online is not taken
|
|
484
|
+
* for a seller. Still missing, the pin goes down the seller-pin path, which
|
|
485
|
+
* reports the peer as unreachable.
|
|
486
|
+
*/
|
|
487
|
+
private _resolvePinnedRouter;
|
|
488
|
+
/**
|
|
489
|
+
* Why a routing service may not be paid, the way a pinned seller is judged:
|
|
490
|
+
* the gateway policy's model allow list (the router's service id counts as
|
|
491
|
+
* its model), its seller rules and strict model routes, and the buyer's
|
|
492
|
+
* hard limits, all through `routingServicePolicy`. Empty when allowed.
|
|
493
|
+
*/
|
|
494
|
+
private _routerExclusionReasons;
|
|
495
|
+
/** A 403 body when the policy forbids paying this router for a ranking; null when allowed or its peer is unknown. */
|
|
496
|
+
private _routerRefusal;
|
|
497
|
+
private _routerCandidateAllowedByRequestPolicy;
|
|
498
|
+
/** Track a router-served chat before buying its recommendation, so routing costs are attributed. */
|
|
499
|
+
private _trackRouterConversation;
|
|
500
|
+
/** Apply model aliases and chat pins, then attach inference to its conversation for accounting. */
|
|
501
|
+
private _prepareInferenceRequest;
|
|
502
|
+
/** Send a fixed-model or pinned-seller request without buying a model recommendation. */
|
|
503
|
+
private _dispatchDirectModelRequest;
|
|
504
|
+
/**
|
|
505
|
+
* Select a seller for the requested model (or the pinned seller) and send the request.
|
|
506
|
+
* Success is written to `res`; failures are returned so callers can fall back or report them.
|
|
507
|
+
*/
|
|
508
|
+
private _dispatchInference;
|
|
451
509
|
private _verifyPeer;
|
|
452
510
|
private _parseMaxUploadBodyBytes;
|
|
453
511
|
private _formatUploadLimitError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buyer-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/buyer-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"buyer-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/buyer-proxy.ts"],"names":[],"mappings":"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"}
|