satgate 1.5.1
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/LICENSE +21 -0
- package/README.md +207 -0
- package/dist/bin/satgate.d.ts +3 -0
- package/dist/bin/satgate.d.ts.map +1 -0
- package/dist/bin/satgate.js +7 -0
- package/dist/bin/satgate.js.map +1 -0
- package/dist/src/auth/allowlist.d.ts +24 -0
- package/dist/src/auth/allowlist.d.ts.map +1 -0
- package/dist/src/auth/allowlist.js +130 -0
- package/dist/src/auth/allowlist.js.map +1 -0
- package/dist/src/auth/middleware.d.ts +15 -0
- package/dist/src/auth/middleware.d.ts.map +1 -0
- package/dist/src/auth/middleware.js +29 -0
- package/dist/src/auth/middleware.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +275 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +133 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +237 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/discovery/llms-txt.d.ts +10 -0
- package/dist/src/discovery/llms-txt.d.ts.map +1 -0
- package/dist/src/discovery/llms-txt.js +25 -0
- package/dist/src/discovery/llms-txt.js.map +1 -0
- package/dist/src/discovery/openapi.d.ts +8 -0
- package/dist/src/discovery/openapi.d.ts.map +1 -0
- package/dist/src/discovery/openapi.js +116 -0
- package/dist/src/discovery/openapi.js.map +1 -0
- package/dist/src/discovery/well-known.d.ts +22 -0
- package/dist/src/discovery/well-known.d.ts.map +1 -0
- package/dist/src/discovery/well-known.js +44 -0
- package/dist/src/discovery/well-known.js.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lightning.d.ts +12 -0
- package/dist/src/lightning.d.ts.map +1 -0
- package/dist/src/lightning.js +38 -0
- package/dist/src/lightning.js.map +1 -0
- package/dist/src/logger.d.ts +16 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +99 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/proxy/capacity.d.ts +15 -0
- package/dist/src/proxy/capacity.d.ts.map +1 -0
- package/dist/src/proxy/capacity.js +28 -0
- package/dist/src/proxy/capacity.js.map +1 -0
- package/dist/src/proxy/handler.d.ts +27 -0
- package/dist/src/proxy/handler.d.ts.map +1 -0
- package/dist/src/proxy/handler.js +165 -0
- package/dist/src/proxy/handler.js.map +1 -0
- package/dist/src/proxy/pricing.d.ts +17 -0
- package/dist/src/proxy/pricing.d.ts.map +1 -0
- package/dist/src/proxy/pricing.js +42 -0
- package/dist/src/proxy/pricing.js.map +1 -0
- package/dist/src/proxy/streaming.d.ts +12 -0
- package/dist/src/proxy/streaming.d.ts.map +1 -0
- package/dist/src/proxy/streaming.js +68 -0
- package/dist/src/proxy/streaming.js.map +1 -0
- package/dist/src/proxy/token-counter.d.ts +22 -0
- package/dist/src/proxy/token-counter.d.ts.map +1 -0
- package/dist/src/proxy/token-counter.js +66 -0
- package/dist/src/proxy/token-counter.js.map +1 -0
- package/dist/src/server.d.ts +9 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +239 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/tunnel.d.ts +26 -0
- package/dist/src/tunnel.d.ts.map +1 -0
- package/dist/src/tunnel.js +78 -0
- package/dist/src/tunnel.js.map +1 -0
- package/dist/src/x402/facilitator.d.ts +7 -0
- package/dist/src/x402/facilitator.d.ts.map +1 -0
- package/dist/src/x402/facilitator.js +33 -0
- package/dist/src/x402/facilitator.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ModelPricing } from '../config.js';
|
|
2
|
+
export interface LlmsTxtInput {
|
|
3
|
+
pricing: ModelPricing;
|
|
4
|
+
models: string[];
|
|
5
|
+
x402?: {
|
|
6
|
+
network: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export declare function generateLlmsTxt(input: LlmsTxtInput): string;
|
|
10
|
+
//# sourceMappingURL=llms-txt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llms-txt.d.ts","sourceRoot":"","sources":["../../../src/discovery/llms-txt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAwB3D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function generateLlmsTxt(input) {
|
|
2
|
+
const modelLines = input.models.map((model) => {
|
|
3
|
+
const price = input.pricing.models[model] ?? input.pricing.default;
|
|
4
|
+
const unit = price === 1 ? 'sat' : 'sats';
|
|
5
|
+
return `- ${model} (${price} ${unit} / 1k tokens)`;
|
|
6
|
+
});
|
|
7
|
+
return `# satgate - Lightning-paid AI inference
|
|
8
|
+
|
|
9
|
+
> This endpoint provides OpenAI-compatible inference behind L402 payments.
|
|
10
|
+
> Pay with Lightning or Cashu. No account required.
|
|
11
|
+
|
|
12
|
+
## Available Models
|
|
13
|
+
${modelLines.join('\n')}
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
Send standard OpenAI-compatible requests to /v1/chat/completions.
|
|
17
|
+
First request returns 402 with a Lightning invoice.
|
|
18
|
+
Pay the invoice, then retry with the L402 credential.
|
|
19
|
+
|
|
20
|
+
## Payment
|
|
21
|
+
POST /create-invoice to get a Lightning invoice.
|
|
22
|
+
Supports Lightning, NWC, and Cashu.
|
|
23
|
+
${input.x402 ? `Also accepts x402 stablecoin payments (${input.x402.network} network).\n` : ''}`;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=llms-txt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llms-txt.js","sourceRoot":"","sources":["../../../src/discovery/llms-txt.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAA;QAClE,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;QACzC,OAAO,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,eAAe,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,OAAO;;;;;;EAMP,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;EAUrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,0CAA0C,KAAK,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAChG,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ModelPricing } from '../config.js';
|
|
2
|
+
export interface OpenApiInput {
|
|
3
|
+
models: string[];
|
|
4
|
+
pricing: ModelPricing;
|
|
5
|
+
x402?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function generateOpenApiSpec(input: OpenApiInput): Record<string, any>;
|
|
8
|
+
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/discovery/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoH5E"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export function generateOpenApiSpec(input) {
|
|
2
|
+
const spec = {
|
|
3
|
+
openapi: '3.1.0',
|
|
4
|
+
info: {
|
|
5
|
+
title: 'satgate',
|
|
6
|
+
description: 'Lightning-paid AI inference (OpenAI-compatible)',
|
|
7
|
+
version: '1.0.0',
|
|
8
|
+
},
|
|
9
|
+
paths: {
|
|
10
|
+
'/v1/chat/completions': {
|
|
11
|
+
post: {
|
|
12
|
+
summary: 'Chat completions',
|
|
13
|
+
description: 'OpenAI-compatible chat completions endpoint',
|
|
14
|
+
security: [{ l402: [] }],
|
|
15
|
+
requestBody: {
|
|
16
|
+
required: true,
|
|
17
|
+
content: {
|
|
18
|
+
'application/json': {
|
|
19
|
+
schema: { $ref: '#/components/schemas/ChatCompletionRequest' },
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
responses: {
|
|
24
|
+
'200': { description: 'Successful completion' },
|
|
25
|
+
'402': { description: 'Payment required' },
|
|
26
|
+
'503': { description: 'Service at capacity' },
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
'/v1/completions': {
|
|
31
|
+
post: {
|
|
32
|
+
summary: 'Text completions (legacy)',
|
|
33
|
+
security: [{ l402: [] }],
|
|
34
|
+
responses: {
|
|
35
|
+
'200': { description: 'Successful completion' },
|
|
36
|
+
'402': { description: 'Payment required' },
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
'/v1/embeddings': {
|
|
41
|
+
post: {
|
|
42
|
+
summary: 'Embeddings',
|
|
43
|
+
security: [{ l402: [] }],
|
|
44
|
+
responses: {
|
|
45
|
+
'200': { description: 'Successful embedding' },
|
|
46
|
+
'402': { description: 'Payment required' },
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
'/v1/models': {
|
|
51
|
+
get: {
|
|
52
|
+
summary: 'List available models',
|
|
53
|
+
responses: {
|
|
54
|
+
'200': {
|
|
55
|
+
description: 'Available models',
|
|
56
|
+
content: {
|
|
57
|
+
'application/json': {
|
|
58
|
+
example: {
|
|
59
|
+
data: input.models.map(id => ({ id, object: 'model' })),
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
'/create-invoice': {
|
|
68
|
+
post: {
|
|
69
|
+
summary: 'Create a Lightning invoice for credits',
|
|
70
|
+
responses: {
|
|
71
|
+
'200': { description: 'Invoice created' },
|
|
72
|
+
'429': { description: 'Rate limit exceeded' },
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
components: {
|
|
78
|
+
securitySchemes: {
|
|
79
|
+
l402: {
|
|
80
|
+
type: 'http',
|
|
81
|
+
scheme: 'L402',
|
|
82
|
+
description: 'L402 macaroon:preimage credentials',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
schemas: {
|
|
86
|
+
ChatCompletionRequest: {
|
|
87
|
+
type: 'object',
|
|
88
|
+
required: ['model', 'messages'],
|
|
89
|
+
properties: {
|
|
90
|
+
model: { type: 'string', enum: input.models },
|
|
91
|
+
messages: {
|
|
92
|
+
type: 'array',
|
|
93
|
+
items: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
properties: {
|
|
96
|
+
role: { type: 'string', enum: ['system', 'user', 'assistant'] },
|
|
97
|
+
content: { type: 'string' },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
stream: { type: 'boolean', default: false },
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
if (input.x402) {
|
|
108
|
+
spec.components.securitySchemes.x402 = {
|
|
109
|
+
type: 'http',
|
|
110
|
+
scheme: 'x-payment',
|
|
111
|
+
description: 'x402 stablecoin payment via x-payment header',
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return spec;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/discovery/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ModelPricing } from '../config.js';
|
|
2
|
+
export interface WellKnownInput {
|
|
3
|
+
pricing: ModelPricing;
|
|
4
|
+
models: string[];
|
|
5
|
+
tiers: Array<{
|
|
6
|
+
amountSats: number;
|
|
7
|
+
creditSats: number;
|
|
8
|
+
label: string;
|
|
9
|
+
}>;
|
|
10
|
+
paymentMethods: string[];
|
|
11
|
+
freeTier?: {
|
|
12
|
+
creditsPerDay: number;
|
|
13
|
+
};
|
|
14
|
+
x402?: {
|
|
15
|
+
receiverAddress: string;
|
|
16
|
+
network: string;
|
|
17
|
+
asset?: string;
|
|
18
|
+
facilitatorUrl?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare function generateWellKnown(input: WellKnownInput): Record<string, any>;
|
|
22
|
+
//# sourceMappingURL=well-known.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known.d.ts","sourceRoot":"","sources":["../../../src/discovery/well-known.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,IAAI,CAAC,EAAE;QACL,eAAe,EAAE,MAAM,CAAA;QACvB,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6C5E"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export function generateWellKnown(input) {
|
|
2
|
+
const modelPricing = {};
|
|
3
|
+
for (const [model, price] of Object.entries(input.pricing.models)) {
|
|
4
|
+
modelPricing[model] = { perThousandTokens: price };
|
|
5
|
+
}
|
|
6
|
+
const result = {
|
|
7
|
+
version: 1,
|
|
8
|
+
name: 'satgate',
|
|
9
|
+
description: 'Lightning-paid AI inference',
|
|
10
|
+
pricing: {
|
|
11
|
+
unit: 'tokens',
|
|
12
|
+
currency: 'SAT',
|
|
13
|
+
models: modelPricing,
|
|
14
|
+
default: { perThousandTokens: input.pricing.default },
|
|
15
|
+
},
|
|
16
|
+
endpoints: [
|
|
17
|
+
{ path: '/v1/chat/completions', method: 'POST', description: 'Chat completions (OpenAI-compatible)' },
|
|
18
|
+
{ path: '/v1/completions', method: 'POST', description: 'Text completions (legacy)' },
|
|
19
|
+
{ path: '/v1/embeddings', method: 'POST', description: 'Embeddings' },
|
|
20
|
+
],
|
|
21
|
+
payment: {
|
|
22
|
+
methods: input.paymentMethods,
|
|
23
|
+
createInvoice: '/create-invoice',
|
|
24
|
+
tiers: input.tiers.map(t => ({ amountSats: t.amountSats, creditSats: t.creditSats })),
|
|
25
|
+
},
|
|
26
|
+
capabilities: {
|
|
27
|
+
streaming: true,
|
|
28
|
+
models: input.models,
|
|
29
|
+
},
|
|
30
|
+
...(input.freeTier && input.freeTier.creditsPerDay > 0 && {
|
|
31
|
+
free_tier: { credits_per_day: input.freeTier.creditsPerDay },
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
if (input.x402) {
|
|
35
|
+
result.payment.x402 = {
|
|
36
|
+
receiver: input.x402.receiverAddress,
|
|
37
|
+
network: input.x402.network,
|
|
38
|
+
...(input.x402.asset && { asset: input.x402.asset }),
|
|
39
|
+
...(input.x402.facilitatorUrl && { facilitator: input.x402.facilitatorUrl }),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=well-known.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known.js","sourceRoot":"","sources":["../../../src/discovery/well-known.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,MAAM,YAAY,GAAkD,EAAE,CAAA;IACtE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClE,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAA;IACpD,CAAC;IAED,MAAM,MAAM,GAAwB;QAClC,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;SACtD;QACD,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;YACrG,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;YACrF,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE;SACtE;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK,CAAC,cAAc;YAC7B,aAAa,EAAE,iBAAiB;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;SACtF;QACD,YAAY,EAAE;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB;QACD,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,IAAI;YACxD,SAAS,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE;SAC7D,CAAC;KACH,CAAA;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG;YACpB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe;YACpC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;YAC3B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7E,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { createTokenTollServer, type TokenTollServer } from './server.js';
|
|
2
|
+
export { loadConfig, type TokenTollConfig, type CliArgs, type FileConfig, type ModelPricing } from './config.js';
|
|
3
|
+
export { createProxyHandler, type ProxyDeps } from './proxy/handler.js';
|
|
4
|
+
export { CapacityTracker } from './proxy/capacity.js';
|
|
5
|
+
export { TokenCounter } from './proxy/token-counter.js';
|
|
6
|
+
export { resolveModelPrice, tokenCostToSats } from './proxy/pricing.js';
|
|
7
|
+
export { createStreamingProxy } from './proxy/streaming.js';
|
|
8
|
+
export { generateWellKnown, type WellKnownInput } from './discovery/well-known.js';
|
|
9
|
+
export { generateLlmsTxt, type LlmsTxtInput } from './discovery/llms-txt.js';
|
|
10
|
+
export { generateOpenApiSpec, type OpenApiInput } from './discovery/openapi.js';
|
|
11
|
+
export { createAuthMiddleware, type AuthMiddlewareConfig } from './auth/middleware.js';
|
|
12
|
+
export { checkAllowlist, type AllowlistResult } from './auth/allowlist.js';
|
|
13
|
+
export { createLightningBackend, type LightningConfig } from './lightning.js';
|
|
14
|
+
export { startTunnel, stopTunnel, findCloudflared, parseTunnelUrl } from './tunnel.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAChH,OAAO,EAAE,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { createTokenTollServer } from './server.js';
|
|
2
|
+
export { loadConfig } from './config.js';
|
|
3
|
+
export { createProxyHandler } from './proxy/handler.js';
|
|
4
|
+
export { CapacityTracker } from './proxy/capacity.js';
|
|
5
|
+
export { TokenCounter } from './proxy/token-counter.js';
|
|
6
|
+
export { resolveModelPrice, tokenCostToSats } from './proxy/pricing.js';
|
|
7
|
+
export { createStreamingProxy } from './proxy/streaming.js';
|
|
8
|
+
export { generateWellKnown } from './discovery/well-known.js';
|
|
9
|
+
export { generateLlmsTxt } from './discovery/llms-txt.js';
|
|
10
|
+
export { generateOpenApiSpec } from './discovery/openapi.js';
|
|
11
|
+
export { createAuthMiddleware } from './auth/middleware.js';
|
|
12
|
+
export { checkAllowlist } from './auth/allowlist.js';
|
|
13
|
+
export { createLightningBackend } from './lightning.js';
|
|
14
|
+
export { startTunnel, stopTunnel, findCloudflared, parseTunnelUrl } from './tunnel.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAwB,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,UAAU,EAA0E,MAAM,aAAa,CAAA;AAChH,OAAO,EAAE,kBAAkB,EAAkB,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAuB,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,eAAe,EAAqB,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAwB,MAAM,gBAAgB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LightningBackend } from '@thecryptodonkey/toll-booth';
|
|
2
|
+
export interface LightningConfig {
|
|
3
|
+
lightning?: string;
|
|
4
|
+
lightningUrl?: string;
|
|
5
|
+
lightningKey?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates a Lightning backend from CLI/config options.
|
|
9
|
+
* Returns undefined if no backend is configured.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createLightningBackend(config: LightningConfig): LightningBackend | undefined;
|
|
12
|
+
//# sourceMappingURL=lightning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightning.d.ts","sourceRoot":"","sources":["../../src/lightning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAQnE,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAID;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS,CAqC5F"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { phoenixdBackend, lnbitsBackend, lndBackend, clnBackend, } from '@thecryptodonkey/toll-booth';
|
|
2
|
+
const HEX_RE = /^[0-9a-fA-F]+$/;
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Lightning backend from CLI/config options.
|
|
5
|
+
* Returns undefined if no backend is configured.
|
|
6
|
+
*/
|
|
7
|
+
export function createLightningBackend(config) {
|
|
8
|
+
if (!config.lightning)
|
|
9
|
+
return undefined;
|
|
10
|
+
if (!config.lightningKey) {
|
|
11
|
+
throw new Error('--lightning-key is required when --lightning is set');
|
|
12
|
+
}
|
|
13
|
+
if (!config.lightningUrl) {
|
|
14
|
+
throw new Error('--lightning-url is required when --lightning is set');
|
|
15
|
+
}
|
|
16
|
+
const url = config.lightningUrl;
|
|
17
|
+
switch (config.lightning) {
|
|
18
|
+
case 'phoenixd':
|
|
19
|
+
return phoenixdBackend({ url, password: config.lightningKey });
|
|
20
|
+
case 'lnbits':
|
|
21
|
+
return lnbitsBackend({ url, apiKey: config.lightningKey });
|
|
22
|
+
case 'lnd': {
|
|
23
|
+
// Hex string = inline macaroon, otherwise = file path
|
|
24
|
+
const isHex = HEX_RE.test(config.lightningKey);
|
|
25
|
+
return lndBackend({
|
|
26
|
+
url,
|
|
27
|
+
...(isHex
|
|
28
|
+
? { macaroon: config.lightningKey }
|
|
29
|
+
: { macaroonPath: config.lightningKey }),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
case 'cln':
|
|
33
|
+
return clnBackend({ url, rune: config.lightningKey });
|
|
34
|
+
default:
|
|
35
|
+
throw new Error(`Unknown lightning backend: ${config.lightning}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=lightning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightning.js","sourceRoot":"","sources":["../../src/lightning.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,aAAa,EACb,UAAU,EACV,UAAU,GACX,MAAM,6BAA6B,CAAA;AAQpC,MAAM,MAAM,GAAG,gBAAgB,CAAA;AAE/B;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAuB;IAC5D,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAEvC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAA;IAE/B,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;QAEhE,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;QAE5D,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,sDAAsD;YACtD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC9C,OAAO,UAAU,CAAC;gBAChB,GAAG;gBACH,GAAG,CAAC,KAAK;oBACP,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE;oBACnC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;aAC3C,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,KAAK;YACR,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;QAEvD;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PaymentEvent, RequestEvent, ChallengeEvent } from '@thecryptodonkey/toll-booth';
|
|
2
|
+
export interface Logger {
|
|
3
|
+
challenge(event: ChallengeEvent): void;
|
|
4
|
+
payment(event: PaymentEvent): void;
|
|
5
|
+
request(event: RequestEvent): void;
|
|
6
|
+
error(message: string, context?: Record<string, unknown>): void;
|
|
7
|
+
info(message: string): void;
|
|
8
|
+
warn(message: string): void;
|
|
9
|
+
}
|
|
10
|
+
export declare function createNoopLogger(): Logger;
|
|
11
|
+
export interface LoggerOptions {
|
|
12
|
+
format: 'pretty' | 'json';
|
|
13
|
+
verbose: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function createLogger(opts: LoggerOptions): Logger;
|
|
16
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE7F,MAAM,WAAW,MAAM;IACrB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IACtC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC/D,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CASzC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;CACjB;AA4FD,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAGxD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export function createNoopLogger() {
|
|
2
|
+
return {
|
|
3
|
+
challenge() { },
|
|
4
|
+
payment() { },
|
|
5
|
+
request() { },
|
|
6
|
+
error() { },
|
|
7
|
+
info() { },
|
|
8
|
+
warn() { },
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function jsonLine(obj) {
|
|
12
|
+
process.stderr.write(JSON.stringify(obj) + '\n');
|
|
13
|
+
}
|
|
14
|
+
function createJsonLogger() {
|
|
15
|
+
return {
|
|
16
|
+
payment(event) {
|
|
17
|
+
jsonLine({ ts: event.timestamp, level: 'info', event: 'payment', ...event });
|
|
18
|
+
},
|
|
19
|
+
request(event) {
|
|
20
|
+
jsonLine({ ts: event.timestamp, level: 'info', event: 'request', ...event });
|
|
21
|
+
},
|
|
22
|
+
challenge(event) {
|
|
23
|
+
jsonLine({ ts: event.timestamp, level: 'info', event: 'challenge', ...event });
|
|
24
|
+
},
|
|
25
|
+
error(message, context) {
|
|
26
|
+
jsonLine({ ts: new Date().toISOString(), level: 'error', event: 'error', message, ...context });
|
|
27
|
+
},
|
|
28
|
+
info(message) {
|
|
29
|
+
jsonLine({ ts: new Date().toISOString(), level: 'info', event: 'info', message });
|
|
30
|
+
},
|
|
31
|
+
warn(message) {
|
|
32
|
+
jsonLine({ ts: new Date().toISOString(), level: 'warn', event: 'warn', message });
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// ANSI colour helpers
|
|
37
|
+
const RESET = '\x1b[0m';
|
|
38
|
+
const GREEN = '\x1b[32m';
|
|
39
|
+
const DIM = '\x1b[2m';
|
|
40
|
+
const YELLOW = '\x1b[33m';
|
|
41
|
+
const CYAN = '\x1b[36m';
|
|
42
|
+
const RED = '\x1b[31m';
|
|
43
|
+
const WHITE = '\x1b[37m';
|
|
44
|
+
function truncHash(hash) {
|
|
45
|
+
return hash.length > 12 ? `${hash.slice(0, 6)}…${hash.slice(-6)}` : hash;
|
|
46
|
+
}
|
|
47
|
+
function createPrettyLogger(verbose) {
|
|
48
|
+
function write(line) {
|
|
49
|
+
process.stderr.write(line + '\n');
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
payment(event) {
|
|
53
|
+
let line = `${GREEN}⚡ PAID ${event.amountSats} sats (hash=${truncHash(event.paymentHash)})${RESET}`;
|
|
54
|
+
if (verbose) {
|
|
55
|
+
const extras = [];
|
|
56
|
+
if (event.rail)
|
|
57
|
+
extras.push(`rail=${event.rail}`);
|
|
58
|
+
if (event.currency && event.currency !== 'sat')
|
|
59
|
+
extras.push(`currency=${event.currency}`);
|
|
60
|
+
if (extras.length > 0)
|
|
61
|
+
line += ` ${DIM}${extras.join(' ')}${RESET}`;
|
|
62
|
+
}
|
|
63
|
+
write(line);
|
|
64
|
+
},
|
|
65
|
+
request(event) {
|
|
66
|
+
const satLabel = event.satsDeducted === 1 ? '1 sat' : `${event.satsDeducted} sats`;
|
|
67
|
+
let line = `${DIM}→ REQUEST ${event.endpoint} ${event.latencyMs}ms ${satLabel} deducted (${event.remainingBalance} remaining)${RESET}`;
|
|
68
|
+
if (verbose) {
|
|
69
|
+
const extras = [`authenticated=${event.authenticated}`];
|
|
70
|
+
if (extras.length > 0)
|
|
71
|
+
line += ` ${extras.join(' ')}`;
|
|
72
|
+
}
|
|
73
|
+
write(line);
|
|
74
|
+
},
|
|
75
|
+
challenge(event) {
|
|
76
|
+
write(`${CYAN}🔒 CHALLENGE ${event.endpoint} → 402 (${event.amountSats} sats)${RESET}`);
|
|
77
|
+
},
|
|
78
|
+
error(message, context) {
|
|
79
|
+
let line = `${RED}⚠ ERROR ${message}${RESET}`;
|
|
80
|
+
if (context) {
|
|
81
|
+
const extras = Object.entries(context).map(([k, v]) => `${k}=${v}`).join(' ');
|
|
82
|
+
line += ` ${DIM}${extras}${RESET}`;
|
|
83
|
+
}
|
|
84
|
+
write(line);
|
|
85
|
+
},
|
|
86
|
+
info(message) {
|
|
87
|
+
write(`${WHITE}ℹ INFO ${message}${RESET}`);
|
|
88
|
+
},
|
|
89
|
+
warn(message) {
|
|
90
|
+
write(`${YELLOW}⚠ WARN ${message}${RESET}`);
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export function createLogger(opts) {
|
|
95
|
+
if (opts.format === 'json')
|
|
96
|
+
return createJsonLogger();
|
|
97
|
+
return createPrettyLogger(opts.verbose);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks concurrent inference requests.
|
|
3
|
+
* maxConcurrent of 0 means unlimited.
|
|
4
|
+
*/
|
|
5
|
+
export declare class CapacityTracker {
|
|
6
|
+
readonly maxConcurrent: number;
|
|
7
|
+
private _active;
|
|
8
|
+
constructor(maxConcurrent: number);
|
|
9
|
+
get active(): number;
|
|
10
|
+
/** Returns true if a slot was acquired, false if at capacity. */
|
|
11
|
+
tryAcquire(): boolean;
|
|
12
|
+
/** Releases a slot. */
|
|
13
|
+
release(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=capacity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacity.d.ts","sourceRoot":"","sources":["../../../src/proxy/capacity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,eAAe;IAEd,QAAQ,CAAC,aAAa,EAAE,MAAM;IAD1C,OAAO,CAAC,OAAO,CAAI;gBACE,aAAa,EAAE,MAAM;IAE1C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,iEAAiE;IACjE,UAAU,IAAI,OAAO;IAQrB,uBAAuB;IACvB,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks concurrent inference requests.
|
|
3
|
+
* maxConcurrent of 0 means unlimited.
|
|
4
|
+
*/
|
|
5
|
+
export class CapacityTracker {
|
|
6
|
+
maxConcurrent;
|
|
7
|
+
_active = 0;
|
|
8
|
+
constructor(maxConcurrent) {
|
|
9
|
+
this.maxConcurrent = maxConcurrent;
|
|
10
|
+
}
|
|
11
|
+
get active() {
|
|
12
|
+
return this._active;
|
|
13
|
+
}
|
|
14
|
+
/** Returns true if a slot was acquired, false if at capacity. */
|
|
15
|
+
tryAcquire() {
|
|
16
|
+
if (this.maxConcurrent > 0 && this._active >= this.maxConcurrent) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
this._active++;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
/** Releases a slot. */
|
|
23
|
+
release() {
|
|
24
|
+
if (this._active > 0)
|
|
25
|
+
this._active--;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=capacity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacity.js","sourceRoot":"","sources":["../../../src/proxy/capacity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAEL;IADb,OAAO,GAAG,CAAC,CAAA;IACnB,YAAqB,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAAG,CAAC;IAE9C,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,iEAAiE;IACjE,UAAU;QACR,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACjE,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,EAAE,CAAA;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CapacityTracker } from './capacity.js';
|
|
2
|
+
import type { ModelPricing } from '../config.js';
|
|
3
|
+
import type { Logger } from '../logger.js';
|
|
4
|
+
export interface ProxyDeps {
|
|
5
|
+
upstream: string;
|
|
6
|
+
pricing: ModelPricing;
|
|
7
|
+
capacity: CapacityTracker;
|
|
8
|
+
reconcile: (paymentHash: string, actualCost: number) => {
|
|
9
|
+
adjusted: boolean;
|
|
10
|
+
newBalance: number;
|
|
11
|
+
delta: number;
|
|
12
|
+
};
|
|
13
|
+
maxBodySize: number;
|
|
14
|
+
/** When true, skip token-based reconciliation — a flat per-request fee was charged upfront. */
|
|
15
|
+
flatPricing?: boolean;
|
|
16
|
+
/** Timeout in ms for upstream requests (default: 120_000). */
|
|
17
|
+
upstreamTimeout?: number;
|
|
18
|
+
/** Logger instance — if omitted, errors are silent. */
|
|
19
|
+
logger?: Logger;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates the AI proxy handler.
|
|
23
|
+
*
|
|
24
|
+
* @returns A function that proxies a single inference request to the upstream.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createProxyHandler(deps: ProxyDeps): (req: Request, paymentHash: string | undefined) => Promise<Response>;
|
|
27
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/proxy/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAK1C,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,eAAe,CAAA;IACzB,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAChH,WAAW,EAAE,MAAM,CAAA;IACnB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AASD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,IAE9C,KAAK,OAAO,EACZ,aAAa,MAAM,GAAG,SAAS,KAC9B,OAAO,CAAC,QAAQ,CAAC,CA8LrB"}
|