@wopr-network/platform-core 1.12.2 → 1.13.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/dist/api/routes/activity.d.ts +9 -0
- package/dist/api/routes/activity.js +68 -0
- package/dist/api/routes/admin-audit-helper.d.ts +7 -0
- package/dist/api/routes/admin-audit-helper.js +13 -0
- package/dist/api/routes/admin-audit.d.ts +13 -0
- package/dist/api/routes/admin-audit.js +61 -0
- package/dist/api/routes/admin-backups.d.ts +19 -0
- package/dist/api/routes/admin-backups.js +116 -0
- package/dist/api/routes/admin-compliance.d.ts +9 -0
- package/dist/api/routes/admin-compliance.js +27 -0
- package/dist/api/routes/admin-credits.d.ts +9 -0
- package/dist/api/routes/admin-credits.js +255 -0
- package/dist/api/routes/admin-gpu.d.ts +46 -0
- package/dist/api/routes/admin-gpu.js +140 -0
- package/dist/api/routes/admin-inference.d.ts +16 -0
- package/dist/api/routes/admin-inference.js +98 -0
- package/dist/api/routes/admin-marketplace.d.ts +36 -0
- package/dist/api/routes/admin-marketplace.js +181 -0
- package/dist/api/routes/admin-migration.d.ts +10 -0
- package/dist/api/routes/admin-migration.js +46 -0
- package/dist/api/routes/admin-notes.d.ts +34 -0
- package/dist/api/routes/admin-notes.js +131 -0
- package/dist/api/routes/admin-onboarding.d.ts +7 -0
- package/dist/api/routes/admin-onboarding.js +49 -0
- package/dist/api/routes/admin-rates.d.ts +9 -0
- package/dist/api/routes/admin-rates.js +427 -0
- package/dist/api/routes/admin-recovery.d.ts +91 -0
- package/dist/api/routes/admin-recovery.js +246 -0
- package/dist/api/routes/admin-roles.d.ts +27 -0
- package/dist/api/routes/admin-roles.js +157 -0
- package/dist/api/routes/audit.d.ts +19 -0
- package/dist/api/routes/audit.js +95 -0
- package/dist/api/routes/auth.d.ts +19 -0
- package/dist/api/routes/auth.js +25 -0
- package/dist/api/routes/channel-validate.d.ts +11 -0
- package/dist/api/routes/channel-validate.js +148 -0
- package/dist/api/routes/fleet-events.d.ts +4 -0
- package/dist/api/routes/fleet-events.js +53 -0
- package/dist/api/routes/friends-proxy.d.ts +28 -0
- package/dist/api/routes/friends-proxy.js +63 -0
- package/dist/api/routes/friends-types.d.ts +34 -0
- package/dist/api/routes/friends-types.js +28 -0
- package/dist/api/routes/health.d.ts +14 -0
- package/dist/api/routes/health.js +32 -0
- package/dist/api/routes/health.test.d.ts +1 -0
- package/dist/api/routes/health.test.js +70 -0
- package/dist/api/routes/incident-response.d.ts +9 -0
- package/dist/api/routes/incident-response.js +148 -0
- package/dist/api/routes/internal-gpu.d.ts +12 -0
- package/dist/api/routes/internal-gpu.js +70 -0
- package/dist/api/routes/internal-nodes.d.ts +41 -0
- package/dist/api/routes/internal-nodes.js +105 -0
- package/dist/api/routes/login-history.d.ts +11 -0
- package/dist/api/routes/login-history.js +22 -0
- package/dist/api/routes/public-pricing.d.ts +9 -0
- package/dist/api/routes/public-pricing.js +32 -0
- package/dist/api/routes/quota.d.ts +8 -0
- package/dist/api/routes/quota.js +113 -0
- package/dist/api/routes/secret-audit.d.ts +12 -0
- package/dist/api/routes/secret-audit.js +41 -0
- package/dist/api/routes/secrets.d.ts +31 -0
- package/dist/api/routes/secrets.js +135 -0
- package/dist/api/routes/tenant-keys.d.ts +16 -0
- package/dist/api/routes/tenant-keys.js +142 -0
- package/dist/api/routes/verify-email.d.ts +19 -0
- package/dist/api/routes/verify-email.js +70 -0
- package/dist/api/routes/ws-auth.d.ts +21 -0
- package/dist/api/routes/ws-auth.js +24 -0
- package/dist/monetization/adapters/bootstrap.d.ts +2 -2
- package/dist/monetization/adapters/bootstrap.js +3 -2
- package/dist/monetization/adapters/bootstrap.test.js +11 -7
- package/dist/monetization/adapters/embeddings-factory.d.ts +10 -5
- package/dist/monetization/adapters/embeddings-factory.js +17 -4
- package/dist/monetization/adapters/embeddings-factory.test.js +85 -31
- package/dist/monetization/adapters/ollama-embeddings.d.ts +40 -0
- package/dist/monetization/adapters/ollama-embeddings.js +76 -0
- package/dist/monetization/adapters/ollama-embeddings.test.d.ts +1 -0
- package/dist/monetization/adapters/ollama-embeddings.test.js +178 -0
- package/dist/monetization/adapters/rate-table.js +9 -3
- package/dist/monetization/adapters/rate-table.test.js +22 -1
- package/package.json +35 -1
- package/src/api/routes/activity.ts +77 -0
- package/src/api/routes/admin-audit-helper.ts +18 -0
- package/src/api/routes/admin-audit.ts +67 -0
- package/src/api/routes/admin-backups.ts +134 -0
- package/src/api/routes/admin-compliance.ts +35 -0
- package/src/api/routes/admin-credits.ts +280 -0
- package/src/api/routes/admin-gpu.ts +202 -0
- package/src/api/routes/admin-inference.ts +109 -0
- package/src/api/routes/admin-marketplace.ts +233 -0
- package/src/api/routes/admin-migration.ts +61 -0
- package/src/api/routes/admin-notes.ts +145 -0
- package/src/api/routes/admin-onboarding.ts +62 -0
- package/src/api/routes/admin-rates.ts +462 -0
- package/src/api/routes/admin-recovery.ts +376 -0
- package/src/api/routes/admin-roles.ts +205 -0
- package/src/api/routes/audit.ts +106 -0
- package/src/api/routes/auth.ts +30 -0
- package/src/api/routes/channel-validate.ts +182 -0
- package/src/api/routes/fleet-events.ts +66 -0
- package/src/api/routes/friends-proxy.ts +94 -0
- package/src/api/routes/friends-types.ts +37 -0
- package/src/api/routes/health.test.ts +80 -0
- package/src/api/routes/health.ts +48 -0
- package/src/api/routes/incident-response.ts +159 -0
- package/src/api/routes/internal-gpu.ts +92 -0
- package/src/api/routes/internal-nodes.ts +157 -0
- package/src/api/routes/login-history.ts +28 -0
- package/src/api/routes/public-pricing.ts +36 -0
- package/src/api/routes/quota.ts +136 -0
- package/src/api/routes/secret-audit.ts +55 -0
- package/src/api/routes/secrets.ts +178 -0
- package/src/api/routes/tenant-keys.ts +178 -0
- package/src/api/routes/verify-email.ts +102 -0
- package/src/api/routes/ws-auth.ts +44 -0
- package/src/monetization/adapters/bootstrap.test.ts +11 -7
- package/src/monetization/adapters/bootstrap.ts +3 -2
- package/src/monetization/adapters/embeddings-factory.test.ts +102 -33
- package/src/monetization/adapters/embeddings-factory.ts +24 -7
- package/src/monetization/adapters/ollama-embeddings.test.ts +235 -0
- package/src/monetization/adapters/ollama-embeddings.ts +120 -0
- package/src/monetization/adapters/rate-table.test.ts +32 -1
- package/src/monetization/adapters/rate-table.ts +9 -3
|
@@ -11,6 +11,18 @@ describe("RATE_TABLE", () => {
|
|
|
11
11
|
expect(premiumTTS).toEqual(expect.objectContaining({ capability: "tts", tier: "premium" }));
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
+
it("contains both standard and premium tiers for embeddings", () => {
|
|
15
|
+
const standard = RATE_TABLE.find((e) => e.capability === "embeddings" && e.tier === "standard");
|
|
16
|
+
const premium = RATE_TABLE.find((e) => e.capability === "embeddings" && e.tier === "premium");
|
|
17
|
+
|
|
18
|
+
expect(standard).toEqual(
|
|
19
|
+
expect.objectContaining({ capability: "embeddings", tier: "standard", provider: "ollama-embeddings" }),
|
|
20
|
+
);
|
|
21
|
+
expect(premium).toEqual(
|
|
22
|
+
expect.objectContaining({ capability: "embeddings", tier: "premium", provider: "openrouter" }),
|
|
23
|
+
);
|
|
24
|
+
});
|
|
25
|
+
|
|
14
26
|
it("contains both standard and premium tiers for text-generation", () => {
|
|
15
27
|
const standard = RATE_TABLE.find((e) => e.capability === "text-generation" && e.tier === "standard");
|
|
16
28
|
const premium = RATE_TABLE.find((e) => e.capability === "text-generation" && e.tier === "premium");
|
|
@@ -52,7 +64,10 @@ describe("RATE_TABLE", () => {
|
|
|
52
64
|
|
|
53
65
|
for (const entry of standardEntries) {
|
|
54
66
|
// Self-hosted providers include "self-hosted-" prefix or are known self-hosted names
|
|
55
|
-
const isSelfHosted =
|
|
67
|
+
const isSelfHosted =
|
|
68
|
+
entry.provider.startsWith("self-hosted-") ||
|
|
69
|
+
entry.provider === "chatterbox-tts" ||
|
|
70
|
+
entry.provider === "ollama-embeddings";
|
|
56
71
|
expect(isSelfHosted).toBe(true);
|
|
57
72
|
}
|
|
58
73
|
});
|
|
@@ -140,6 +155,13 @@ describe("getRatesForCapability", () => {
|
|
|
140
155
|
expect(rates.map((r) => r.tier)).toContain("premium");
|
|
141
156
|
});
|
|
142
157
|
|
|
158
|
+
it("returns both standard and premium for embeddings", () => {
|
|
159
|
+
const rates = getRatesForCapability("embeddings");
|
|
160
|
+
expect(rates).toHaveLength(2);
|
|
161
|
+
expect(rates.map((r) => r.tier)).toContain("standard");
|
|
162
|
+
expect(rates.map((r) => r.tier)).toContain("premium");
|
|
163
|
+
});
|
|
164
|
+
|
|
143
165
|
it("returns premium-only for transcription (no standard tier yet)", () => {
|
|
144
166
|
const rates = getRatesForCapability("transcription");
|
|
145
167
|
expect(rates).toHaveLength(1);
|
|
@@ -186,6 +208,15 @@ describe("calculateSavings", () => {
|
|
|
186
208
|
expect(savings).toBeCloseTo(2.01, 2);
|
|
187
209
|
});
|
|
188
210
|
|
|
211
|
+
it("calculates savings for embeddings at 1M tokens", () => {
|
|
212
|
+
const savings = calculateSavings("embeddings", 1_000_000);
|
|
213
|
+
|
|
214
|
+
// Standard (ollama-embeddings): $0.006 per 1M tokens
|
|
215
|
+
// Premium (openrouter): $0.026 per 1M tokens
|
|
216
|
+
// Savings: $0.020 per 1M tokens
|
|
217
|
+
expect(savings).toBeCloseTo(0.02, 3);
|
|
218
|
+
});
|
|
219
|
+
|
|
189
220
|
it("returns zero when capability has no standard tier", () => {
|
|
190
221
|
// Transcription only has premium (deepgram) — no self-hosted whisper yet
|
|
191
222
|
const savings = calculateSavings("transcription", 1000);
|
|
@@ -119,8 +119,15 @@ export const RATE_TABLE: RateEntry[] = [
|
|
|
119
119
|
},
|
|
120
120
|
|
|
121
121
|
// Embeddings
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
{
|
|
123
|
+
capability: "embeddings",
|
|
124
|
+
tier: "standard",
|
|
125
|
+
provider: "ollama-embeddings",
|
|
126
|
+
costPerUnit: 0.000000005, // Amortized GPU cost per token ($0.005 per 1M tokens)
|
|
127
|
+
billingUnit: "per-token",
|
|
128
|
+
margin: 1.2, // 20% — dashboard default; runtime uses getMargin()
|
|
129
|
+
effectivePrice: 0.000000006, // = costPerUnit * margin ($0.006 per 1M tokens)
|
|
130
|
+
},
|
|
124
131
|
{
|
|
125
132
|
capability: "embeddings",
|
|
126
133
|
tier: "premium",
|
|
@@ -157,7 +164,6 @@ export const RATE_TABLE: RateEntry[] = [
|
|
|
157
164
|
|
|
158
165
|
// Future self-hosted adapters will add more entries here:
|
|
159
166
|
// - transcription: self-hosted-whisper (standard) — when GPU adapter exists
|
|
160
|
-
// - embeddings: self-hosted-embeddings (standard) — when GPU adapter exists
|
|
161
167
|
// - image-generation: self-hosted-sdxl (standard) — when GPU adapter exists
|
|
162
168
|
];
|
|
163
169
|
|