spl-pay-per-suite 1.1.5 → 1.1.8
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 +24 -10
- package/package.json +25 -6
- package/src/cli.mjs +1 -8
- package/src/index.mjs +2 -0
- package/src/mcp-server.mjs +67 -22
- package/src/quote.mjs +20 -2
package/README.md
CHANGED
|
@@ -2,19 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
**SPL Pay Per Suite** — freemium quotes, Stripe (humans) + x402 (agents). Library, CLI, and MCP.
|
|
4
4
|
|
|
5
|
-
## Pricing (
|
|
5
|
+
## Pricing (canonical · matches live API)
|
|
6
6
|
|
|
7
7
|
| Tier | Rule |
|
|
8
8
|
|------|------|
|
|
9
|
-
| **Free** | First **
|
|
10
|
-
| **Usage** |
|
|
11
|
-
| **Min paid** |
|
|
9
|
+
| **Free** | First **100 GB per job** — $0 |
|
|
10
|
+
| **Usage** | Next 100 paid GB: **$0.05 / GB** · then **$0.04 / GB** |
|
|
11
|
+
| **Min paid** | **$0.05** once over free |
|
|
12
|
+
| **Ref** | Under typical first paid cloud egress (~$0.09/GB) |
|
|
12
13
|
|
|
13
14
|
**Try Gate is retired.** Evaluate on free suite — not a $9 chip-in.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
### Standing license SKUs (not suite metered)
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
| SKU | USD |
|
|
19
|
+
|-----|----:|
|
|
20
|
+
| CDDG:Split | 199 |
|
|
21
|
+
| ZRW N00b / Pro / L33t | 79 / 249 / 699 |
|
|
22
|
+
| blackjack · shard-zip · shard-tsdb · slid-phi · support | 199 |
|
|
23
|
+
| consulting | 250 |
|
|
24
|
+
| sponsor / donate | 29 / 29.99 |
|
|
25
|
+
| GAO entry | 1 |
|
|
26
|
+
|
|
27
|
+
Canonical table: [`docs/NPM_PRICING.md`](../../docs/NPM_PRICING.md) · Catalog: [GET /api/x402-products](https://slidphilabs.fly.dev/api/x402-products)
|
|
28
|
+
|
|
29
|
+
Live suite: [slidphilabs.fly.dev/pps](https://slidphilabs.fly.dev/pps) · Discovery: [GET /api/agent](https://slidphilabs.fly.dev/api/agent)
|
|
18
30
|
|
|
19
31
|
## Install
|
|
20
32
|
|
|
@@ -29,11 +41,11 @@ npx spl-pay-per-suite quote --bytes 500000000
|
|
|
29
41
|
```js
|
|
30
42
|
import { computeQuote } from "spl-pay-per-suite";
|
|
31
43
|
|
|
32
|
-
computeQuote({ product: "auto", op: "compress", bytes:
|
|
33
|
-
// → free: true
|
|
44
|
+
computeQuote({ product: "auto", op: "compress", bytes: 50 * 1024 ** 3 });
|
|
45
|
+
// → free: true (under 100 GB)
|
|
34
46
|
|
|
35
|
-
computeQuote({ product: "auto", op: "compress", bytes:
|
|
36
|
-
// → free: false
|
|
47
|
+
computeQuote({ product: "auto", op: "compress", bytes: 110 * 1024 ** 3 });
|
|
48
|
+
// → free: false · ~$0.50 class (10 GB × 5¢)
|
|
37
49
|
```
|
|
38
50
|
|
|
39
51
|
## MCP
|
|
@@ -45,6 +57,8 @@ npx spl-pay-per-suite mcp
|
|
|
45
57
|
|
|
46
58
|
Tools: `spl_pps_info`, `spl_pps_quote`, `spl_pps_checkout`, `spl_pps_submit_job`, `spl_pps_classify`, `spl_pps_x402_*`.
|
|
47
59
|
|
|
60
|
+
`spl_pps_info` returns the same suite rates as the live quote engine (`SUITE_PRICING`).
|
|
61
|
+
|
|
48
62
|
## IP Guard
|
|
49
63
|
|
|
50
64
|
Quotes and commerce rails only — no private compression process or engines in this package.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spl-pay-per-suite",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "SPL Pay Per Suite —
|
|
3
|
+
"version": "1.1.8",
|
|
4
|
+
"description": "SPL Pay Per Suite — unpaid cap 6.9 GB / 3 h, then ~5¢/GB (~4¢ bulk). Stripe + x402. MCP client. No encoder in this package.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.mjs",
|
|
7
7
|
"exports": {
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"bin": {
|
|
12
12
|
"spl-pps": "src/cli.mjs",
|
|
13
13
|
"spl-pay-per-suite": "src/cli.mjs",
|
|
14
|
-
"pay-per-suite": "src/cli.mjs"
|
|
14
|
+
"pay-per-suite": "src/cli.mjs",
|
|
15
|
+
"spl-mcp": "src/mcp-server.mjs"
|
|
15
16
|
},
|
|
16
17
|
"files": [
|
|
17
18
|
"src",
|
|
@@ -63,7 +64,7 @@
|
|
|
63
64
|
},
|
|
64
65
|
"funding": {
|
|
65
66
|
"type": "individual",
|
|
66
|
-
"url": "https://www.slidphilabs.com/
|
|
67
|
+
"url": "https://www.slidphilabs.com/pay"
|
|
67
68
|
},
|
|
68
69
|
"agentic": {
|
|
69
70
|
"modules": {
|
|
@@ -84,7 +85,7 @@
|
|
|
84
85
|
"site": "https://www.slidphilabs.com",
|
|
85
86
|
"llms_txt": "https://www.slidphilabs.com/llms.txt",
|
|
86
87
|
"agents_json": "https://www.slidphilabs.com/agents.json",
|
|
87
|
-
"one_liner": "Free first 100 GB suite
|
|
88
|
+
"one_liner": "Free first 100 GB suite \u00b7 then ~5\u00a2/GB then ~4\u00a2/GB. Pay: https://www.slidphilabs.com/pay \u00b7 GET https://www.slidphilabs.com/api/agent",
|
|
88
89
|
"agent_platform": {
|
|
89
90
|
"cuni": "https://cuni-studio.fly.dev/",
|
|
90
91
|
"agent_rider": "https://agentrider.vercel.app/",
|
|
@@ -101,7 +102,9 @@
|
|
|
101
102
|
"model": "freemium_suite_v4_undercut"
|
|
102
103
|
},
|
|
103
104
|
"welcome": "https://www.slidphilabs.com/api/welcome",
|
|
104
|
-
"platform_json": "https://www.slidphilabs.com/platform.json"
|
|
105
|
+
"platform_json": "https://www.slidphilabs.com/platform.json",
|
|
106
|
+
"pay_ui": "https://www.slidphilabs.com/pay",
|
|
107
|
+
"team_mesh": "https://spl-team-mesh.fly.dev"
|
|
105
108
|
},
|
|
106
109
|
"x402": {
|
|
107
110
|
"discovery": "https://www.slidphilabs.com/api/agent",
|
|
@@ -114,5 +117,21 @@
|
|
|
114
117
|
},
|
|
115
118
|
"bugs": {
|
|
116
119
|
"url": "https://www.slidphilabs.com"
|
|
120
|
+
},
|
|
121
|
+
"pricing": {
|
|
122
|
+
"sku": "suite",
|
|
123
|
+
"amount_usd": "metered",
|
|
124
|
+
"currency": "usd",
|
|
125
|
+
"buy": "https://www.slidphilabs.com/pps",
|
|
126
|
+
"checkout": "https://www.slidphilabs.com/api/checkout",
|
|
127
|
+
"access": "https://www.slidphilabs.com/access?product=suite",
|
|
128
|
+
"catalog": "https://www.slidphilabs.com/api/x402-products",
|
|
129
|
+
"pay_ui": "https://www.slidphilabs.com/pay",
|
|
130
|
+
"doc": "https://www.slidphilabs.com/pps",
|
|
131
|
+
"suite_pricing": {
|
|
132
|
+
"free_cap_gb": 100,
|
|
133
|
+
"usd_per_gb_after_free": 0.05,
|
|
134
|
+
"usd_per_gb_bulk": 0.04
|
|
135
|
+
}
|
|
117
136
|
}
|
|
118
137
|
}
|
package/src/cli.mjs
CHANGED
|
@@ -102,14 +102,7 @@ async function main() {
|
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
if (cmd === "mcp") {
|
|
106
|
-
console.log("Start MCP: node src/mcp-server.mjs");
|
|
107
|
-
console.log("Or: npm run mcp --prefix packages/spl-pay-per-suite");
|
|
108
|
-
console.log("Config: { \"command\": \"npx\", \"args\": [\"-y\", \"spl-pay-per-suite\", \"mcp-serve\"] }");
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (cmd === "mcp-serve") {
|
|
105
|
+
if (cmd === "mcp" || cmd === "mcp-serve") {
|
|
113
106
|
await import("./mcp-server.mjs");
|
|
114
107
|
return;
|
|
115
108
|
}
|
package/src/index.mjs
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
MIN_CENTS,
|
|
19
19
|
MAX_CENTS,
|
|
20
20
|
MAX_BYTES,
|
|
21
|
+
SUITE_PRICING,
|
|
21
22
|
} from "./quote.mjs";
|
|
22
23
|
|
|
23
24
|
export {
|
|
@@ -36,6 +37,7 @@ export {
|
|
|
36
37
|
MIN_CENTS,
|
|
37
38
|
MAX_CENTS,
|
|
38
39
|
MAX_BYTES,
|
|
40
|
+
SUITE_PRICING,
|
|
39
41
|
};
|
|
40
42
|
|
|
41
43
|
export const SERVICE_NAME = "SPL Pay Per Suite";
|
package/src/mcp-server.mjs
CHANGED
|
@@ -38,25 +38,37 @@ import {
|
|
|
38
38
|
OP_MULT,
|
|
39
39
|
FREE_BYTES,
|
|
40
40
|
MIN_PAID_CENTS,
|
|
41
|
+
SUITE_PRICING,
|
|
41
42
|
} from "./index.mjs";
|
|
42
43
|
|
|
44
|
+
const SUITE_LINE =
|
|
45
|
+
"Free first 100 GB per job · then ~5¢/GB (4¢ after 100 paid GB) · min $0.05 · under ~9¢ cloud egress. Try Gate retired.";
|
|
46
|
+
|
|
43
47
|
const TOOLS = [
|
|
48
|
+
{
|
|
49
|
+
name: "spl_lab_auth",
|
|
50
|
+
description:
|
|
51
|
+
"One lab account for every Slid Phi product. POST https://www.slidphilabs.com/api/auth {action:signup|login,email,password,name}. Then open CuNi, Rider, Chamber with the token. Humans: /signup /login /account.",
|
|
52
|
+
inputSchema: { type: "object", properties: {} },
|
|
53
|
+
},
|
|
44
54
|
{
|
|
45
55
|
name: "spl_pps_info",
|
|
46
56
|
description:
|
|
47
|
-
"SPL Pay Per Suite overview:
|
|
57
|
+
"SPL Pay Per Suite overview: " +
|
|
58
|
+
SUITE_LINE +
|
|
59
|
+
" Stripe (humans) + x402 (agents). Standing SKUs: CDDG $199 · ZRW $79/$249/$699 · blackjack/shards/slid-phi/support $199 · consulting $250.",
|
|
48
60
|
inputSchema: { type: "object", properties: {} },
|
|
49
61
|
},
|
|
50
62
|
{
|
|
51
63
|
name: "spl_pps_x402_info",
|
|
52
64
|
description:
|
|
53
|
-
"Agentic commerce discovery: standing product catalog + freemium suite jobs (free under
|
|
65
|
+
"Agentic commerce discovery: standing product catalog + freemium suite jobs (free under 100 GB), headers, flow. Stripe remains for humans.",
|
|
54
66
|
inputSchema: { type: "object", properties: {} },
|
|
55
67
|
},
|
|
56
68
|
{
|
|
57
69
|
name: "spl_pps_x402_catalog",
|
|
58
70
|
description:
|
|
59
|
-
"List standing Slid Phi Labs license products agents can buy via x402 (CDDG:Split, ZRW tiers, Blackjack
|
|
71
|
+
"List standing Slid Phi Labs license products agents can buy via x402 (CDDG:Split $199, ZRW tiers $79/$249/$699, Blackjack/shards/slid-phi/support $199, consulting $250, etc.). Freemium suite for eval.",
|
|
60
72
|
inputSchema: { type: "object", properties: {} },
|
|
61
73
|
},
|
|
62
74
|
{
|
|
@@ -69,7 +81,7 @@ const TOOLS = [
|
|
|
69
81
|
sku: {
|
|
70
82
|
type: "string",
|
|
71
83
|
description:
|
|
72
|
-
"cddg-split | zrw-n00b | zrw-pro | zrw-l33t | blackjack | shard-zip | shard-tsdb | slid-phi | support-integration | consulting | sponsor | donate",
|
|
84
|
+
"cddg-split($199) | zrw-n00b($79) | zrw-pro($249) | zrw-l33t($699) | blackjack($199) | shard-zip($199) | shard-tsdb($199) | slid-phi($199) | support-integration($199) | consulting($250) | sponsor($29) | donate($29.99) | gao-entry($1)",
|
|
73
85
|
},
|
|
74
86
|
email: { type: "string" },
|
|
75
87
|
note: { type: "string" },
|
|
@@ -82,14 +94,17 @@ const TOOLS = [
|
|
|
82
94
|
{
|
|
83
95
|
name: "spl_pps_x402_requirements",
|
|
84
96
|
description:
|
|
85
|
-
"Probe POST /api/x402-suite. Free under
|
|
97
|
+
"Probe POST /api/x402-suite. Free under 100 GB (no pay). Over free → 402 accepts[] for usage (~5¢/GB then 4¢ · min $0.05).",
|
|
86
98
|
inputSchema: {
|
|
87
99
|
type: "object",
|
|
88
100
|
properties: {
|
|
89
101
|
product: { type: "string" },
|
|
90
102
|
dataClass: { type: "string" },
|
|
91
103
|
op: { type: "string" },
|
|
92
|
-
bytes: {
|
|
104
|
+
bytes: {
|
|
105
|
+
type: "number",
|
|
106
|
+
description: "Payload bytes (≤100 GiB free; over free requires payment)",
|
|
107
|
+
},
|
|
93
108
|
email: { type: "string" },
|
|
94
109
|
note: { type: "string" },
|
|
95
110
|
},
|
|
@@ -98,7 +113,7 @@ const TOOLS = [
|
|
|
98
113
|
{
|
|
99
114
|
name: "spl_pps_x402_submit",
|
|
100
115
|
description:
|
|
101
|
-
"Submit freemium suite job via x402. Under
|
|
116
|
+
"Submit freemium suite job via x402. Under 100 GB free (no paymentHeader). Over free: pass paymentHeader after paying, or devBypass for staging.",
|
|
102
117
|
inputSchema: {
|
|
103
118
|
type: "object",
|
|
104
119
|
properties: {
|
|
@@ -109,7 +124,10 @@ const TOOLS = [
|
|
|
109
124
|
email: { type: "string" },
|
|
110
125
|
note: { type: "string" },
|
|
111
126
|
fileName: { type: "string" },
|
|
112
|
-
paymentHeader: {
|
|
127
|
+
paymentHeader: {
|
|
128
|
+
type: "string",
|
|
129
|
+
description: "Base64 X-PAYMENT proof (only if over free 100 GB cap)",
|
|
130
|
+
},
|
|
113
131
|
devBypass: { type: "boolean", description: "Staging only if server allows" },
|
|
114
132
|
},
|
|
115
133
|
},
|
|
@@ -117,7 +135,7 @@ const TOOLS = [
|
|
|
117
135
|
{
|
|
118
136
|
name: "spl_pps_quote",
|
|
119
137
|
description:
|
|
120
|
-
"Instant freemium quote: free first
|
|
138
|
+
"Instant freemium quote: free first 100 GB ($0), then ~5¢/GB (4¢ bulk) · min $0.05. Inputs: product, dataClass, op, bytes. Returns free flag + USD amount.",
|
|
121
139
|
inputSchema: {
|
|
122
140
|
type: "object",
|
|
123
141
|
properties: {
|
|
@@ -131,7 +149,10 @@ const TOOLS = [
|
|
|
131
149
|
"zeros | ramp | walk | mixed_ints | timeseries | json_series | binary | unknown",
|
|
132
150
|
},
|
|
133
151
|
op: { type: "string", description: "compress | decompress | roundtrip" },
|
|
134
|
-
bytes: {
|
|
152
|
+
bytes: {
|
|
153
|
+
type: "number",
|
|
154
|
+
description: "Payload size in bytes (≤100 GiB = free)",
|
|
155
|
+
},
|
|
135
156
|
remote: { type: "boolean", description: "If true, use live site API" },
|
|
136
157
|
},
|
|
137
158
|
},
|
|
@@ -139,7 +160,7 @@ const TOOLS = [
|
|
|
139
160
|
{
|
|
140
161
|
name: "spl_pps_checkout",
|
|
141
162
|
description:
|
|
142
|
-
"Checkout for suite quote. Under
|
|
163
|
+
"Checkout for suite quote. Under 100 GB returns free_showcase (no Stripe). Over free returns Stripe Checkout URL.",
|
|
143
164
|
inputSchema: {
|
|
144
165
|
type: "object",
|
|
145
166
|
properties: {
|
|
@@ -154,7 +175,7 @@ const TOOLS = [
|
|
|
154
175
|
{
|
|
155
176
|
name: "spl_pps_submit_job",
|
|
156
177
|
description:
|
|
157
|
-
"Submit a Pay Per Suite job (free under
|
|
178
|
+
"Submit a Pay Per Suite job (free under 100 GB after free_showcase, or after paid). Lab runs best tool and emails results. Requires email.",
|
|
158
179
|
inputSchema: {
|
|
159
180
|
type: "object",
|
|
160
181
|
properties: {
|
|
@@ -180,7 +201,10 @@ const TOOLS = [
|
|
|
180
201
|
inputSchema: {
|
|
181
202
|
type: "object",
|
|
182
203
|
properties: {
|
|
183
|
-
sample_base64: {
|
|
204
|
+
sample_base64: {
|
|
205
|
+
type: "string",
|
|
206
|
+
description: "Base64 of file head (≤8KB recommended)",
|
|
207
|
+
},
|
|
184
208
|
},
|
|
185
209
|
required: ["sample_base64"],
|
|
186
210
|
},
|
|
@@ -196,19 +220,37 @@ function err(id, code, message) {
|
|
|
196
220
|
|
|
197
221
|
async function callTool(name, args = {}) {
|
|
198
222
|
switch (name) {
|
|
223
|
+
case "spl_lab_auth":
|
|
224
|
+
return {
|
|
225
|
+
signup: "https://www.slidphilabs.com/signup",
|
|
226
|
+
login: "https://www.slidphilabs.com/login",
|
|
227
|
+
account: "https://www.slidphilabs.com/account",
|
|
228
|
+
api: "POST https://www.slidphilabs.com/api/auth",
|
|
229
|
+
body: { action: "signup|login", email: "", password: "", name: "" },
|
|
230
|
+
lead_product: "cuni",
|
|
231
|
+
cash_product: "chamber",
|
|
232
|
+
};
|
|
199
233
|
case "spl_pps_info":
|
|
200
234
|
return {
|
|
201
235
|
service: SERVICE_NAME,
|
|
202
236
|
site: SITE_PPS,
|
|
203
|
-
pricing: {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
237
|
+
pricing: { ...SUITE_PRICING, free_cap_bytes: FREE_BYTES, min_paid_cents: MIN_PAID_CENTS },
|
|
238
|
+
standing_skus_usd: {
|
|
239
|
+
"cddg-split": 199,
|
|
240
|
+
"zrw-n00b": 79,
|
|
241
|
+
"zrw-pro": 249,
|
|
242
|
+
"zrw-l33t": 699,
|
|
243
|
+
blackjack: 199,
|
|
244
|
+
"shard-zip": 199,
|
|
245
|
+
"shard-tsdb": 199,
|
|
246
|
+
"slid-phi": 199,
|
|
247
|
+
"support-integration": 199,
|
|
248
|
+
consulting: 250,
|
|
249
|
+
sponsor: 29,
|
|
250
|
+
donate: 29.99,
|
|
251
|
+
"gao-entry": 1,
|
|
211
252
|
},
|
|
253
|
+
catalog: X402_PRODUCTS_URL,
|
|
212
254
|
pay_human: STRIPE_PAYMENT_LINK,
|
|
213
255
|
pay_agent_products: X402_PRODUCTS_URL,
|
|
214
256
|
pay_agent_jobs: X402_SUITE_URL,
|
|
@@ -218,7 +260,10 @@ async function callTool(name, args = {}) {
|
|
|
218
260
|
ops: Object.keys(OP_MULT),
|
|
219
261
|
npm: "spl-pay-per-suite",
|
|
220
262
|
cli: "npx spl-pay-per-suite quote|pay|job|x402|catalog|buy",
|
|
221
|
-
discovery: "https://
|
|
263
|
+
discovery: "https://slidphilabs.fly.dev/api/agent",
|
|
264
|
+
pay_ui: "https://slidphilabs.fly.dev/pay",
|
|
265
|
+
canonical_doc: "docs/NPM_PRICING.md",
|
|
266
|
+
one_liner: SUITE_LINE,
|
|
222
267
|
};
|
|
223
268
|
case "spl_pps_x402_info":
|
|
224
269
|
return agentDiscovery();
|
package/src/quote.mjs
CHANGED
|
@@ -9,6 +9,22 @@ export const MAX_CENTS = 1_000_000;
|
|
|
9
9
|
export const MIN_PAID_CENTS = 5;
|
|
10
10
|
export const MIN_CENTS = 0;
|
|
11
11
|
|
|
12
|
+
/** Canonical suite rates — MCP, package.json, site, API must match */
|
|
13
|
+
export const SUITE_PRICING = {
|
|
14
|
+
model: "freemium_suite_v4_undercut",
|
|
15
|
+
free_cap_gb: 100,
|
|
16
|
+
free_cap_bytes: FREE_BYTES,
|
|
17
|
+
usd_per_gb_after_free: 0.05,
|
|
18
|
+
usd_per_gb_first_100: 0.05,
|
|
19
|
+
usd_per_gb_bulk: 0.04,
|
|
20
|
+
min_paid_usd: 0.05,
|
|
21
|
+
min_paid_cents: MIN_PAID_CENTS,
|
|
22
|
+
first_paid_egress_ref_usd: 0.09,
|
|
23
|
+
try_gate: "retired",
|
|
24
|
+
human_one_liner:
|
|
25
|
+
"Free first 100 GB per job · then ~5¢/GB (4¢ after 100 paid GB) · min $0.05 · under ~9¢ cloud egress",
|
|
26
|
+
};
|
|
27
|
+
|
|
12
28
|
export const PRODUCT_ADD_CENTS = {
|
|
13
29
|
auto: 0, zrw: 0, "cddg-split": 25, blackjack: 0,
|
|
14
30
|
"shard-zip": 0, "shard-tsdb": 0, "slid-phi": 0,
|
|
@@ -26,8 +42,10 @@ export const OP_MULT = {
|
|
|
26
42
|
export const STRIPE_PAYMENT_LINK =
|
|
27
43
|
process.env.SPL_PPS_PAYMENT_LINK ||
|
|
28
44
|
"https://buy.stripe.com/aFa00k4B70OYetL0O46wE0g";
|
|
29
|
-
export const SITE_PPS =
|
|
30
|
-
|
|
45
|
+
export const SITE_PPS =
|
|
46
|
+
process.env.SPL_PPS_SITE || "https://www.slidphilabs.com/pps";
|
|
47
|
+
export const API_BASE =
|
|
48
|
+
process.env.SPL_PPS_API || "https://www.slidphilabs.com";
|
|
31
49
|
|
|
32
50
|
export function usageFeeCents(billableBytes) {
|
|
33
51
|
const b = Math.max(0, Number(billableBytes) || 0);
|