@clawpay-hedera/sdk 0.1.0
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 +294 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +137 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client/hedera-payment.d.ts +25 -0
- package/dist/client/hedera-payment.d.ts.map +1 -0
- package/dist/client/hedera-payment.js +68 -0
- package/dist/client/hedera-payment.js.map +1 -0
- package/dist/client/with-x402-client.d.ts +27 -0
- package/dist/client/with-x402-client.d.ts.map +1 -0
- package/dist/client/with-x402-client.js +136 -0
- package/dist/client/with-x402-client.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -0
- package/dist/handler/proxy/hooks/analytics-hook.d.ts +299 -0
- package/dist/handler/proxy/hooks/analytics-hook.d.ts.map +1 -0
- package/dist/handler/proxy/hooks/analytics-hook.js +133 -0
- package/dist/handler/proxy/hooks/analytics-hook.js.map +1 -0
- package/dist/handler/proxy/hooks/auth-headers-hook.d.ts +20 -0
- package/dist/handler/proxy/hooks/auth-headers-hook.d.ts.map +1 -0
- package/dist/handler/proxy/hooks/auth-headers-hook.js +34 -0
- package/dist/handler/proxy/hooks/auth-headers-hook.js.map +1 -0
- package/dist/handler/proxy/hooks/hcs-audit-hook.d.ts +133 -0
- package/dist/handler/proxy/hooks/hcs-audit-hook.d.ts.map +1 -0
- package/dist/handler/proxy/hooks/hcs-audit-hook.js +138 -0
- package/dist/handler/proxy/hooks/hcs-audit-hook.js.map +1 -0
- package/dist/handler/proxy/hooks/logging-hook.d.ts +100 -0
- package/dist/handler/proxy/hooks/logging-hook.d.ts.map +1 -0
- package/dist/handler/proxy/hooks/logging-hook.js +14 -0
- package/dist/handler/proxy/hooks/logging-hook.js.map +1 -0
- package/dist/handler/proxy/hooks/x402-hook.d.ts +246 -0
- package/dist/handler/proxy/hooks/x402-hook.d.ts.map +1 -0
- package/dist/handler/proxy/hooks/x402-hook.js +219 -0
- package/dist/handler/proxy/hooks/x402-hook.js.map +1 -0
- package/dist/handler/proxy/hooks.d.ts +12111 -0
- package/dist/handler/proxy/hooks.d.ts.map +1 -0
- package/dist/handler/proxy/hooks.js +142 -0
- package/dist/handler/proxy/hooks.js.map +1 -0
- package/dist/handler/proxy/index.d.ts +3 -0
- package/dist/handler/proxy/index.d.ts.map +1 -0
- package/dist/handler/proxy/index.js +489 -0
- package/dist/handler/proxy/index.js.map +1 -0
- package/dist/handler/server/index.d.ts +25 -0
- package/dist/handler/server/index.d.ts.map +1 -0
- package/dist/handler/server/index.js +38 -0
- package/dist/handler/server/index.js.map +1 -0
- package/dist/handler/server/platform-detection.d.ts +32 -0
- package/dist/handler/server/platform-detection.d.ts.map +1 -0
- package/dist/handler/server/platform-detection.js +441 -0
- package/dist/handler/server/platform-detection.js.map +1 -0
- package/dist/handler/server/plugins/with-x402.d.ts +21 -0
- package/dist/handler/server/plugins/with-x402.d.ts.map +1 -0
- package/dist/handler/server/plugins/with-x402.js +290 -0
- package/dist/handler/server/plugins/with-x402.js.map +1 -0
- package/dist/handler/server/templates/x402-server.d.ts +16 -0
- package/dist/handler/server/templates/x402-server.d.ts.map +1 -0
- package/dist/handler/server/templates/x402-server.js +13 -0
- package/dist/handler/server/templates/x402-server.js.map +1 -0
- package/dist/handler/shared/hedera-price.d.ts +26 -0
- package/dist/handler/shared/hedera-price.d.ts.map +1 -0
- package/dist/handler/shared/hedera-price.js +54 -0
- package/dist/handler/shared/hedera-price.js.map +1 -0
- package/dist/handler.d.ts +14 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +12 -0
- package/dist/handler.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/networks/hedera.d.ts +52 -0
- package/dist/networks/hedera.d.ts.map +1 -0
- package/dist/networks/hedera.js +61 -0
- package/dist/networks/hedera.js.map +1 -0
- package/dist/server/stdio/index.d.ts +2 -0
- package/dist/server/stdio/index.d.ts.map +1 -0
- package/dist/server/stdio/index.js +91 -0
- package/dist/server/stdio/index.js.map +1 -0
- package/dist/server/stdio/proxy-server.d.ts +9 -0
- package/dist/server/stdio/proxy-server.d.ts.map +1 -0
- package/dist/server/stdio/proxy-server.js +53 -0
- package/dist/server/stdio/proxy-server.js.map +1 -0
- package/dist/server/stdio/start-stdio-server.d.ts +28 -0
- package/dist/server/stdio/start-stdio-server.d.ts.map +1 -0
- package/dist/server/stdio/start-stdio-server.js +84 -0
- package/dist/server/stdio/start-stdio-server.js.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -0
- package/dist/utils/signer.d.ts +4 -0
- package/dist/utils/signer.d.ts.map +1 -0
- package/dist/utils/signer.js +58 -0
- package/dist/utils/signer.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
function detectRuntime() {
|
|
2
|
+
// Check for Edge Runtime first
|
|
3
|
+
if (typeof globalThis !== 'undefined') {
|
|
4
|
+
const edgeRuntime = globalThis.EdgeRuntime;
|
|
5
|
+
if (typeof edgeRuntime === 'string') {
|
|
6
|
+
return {
|
|
7
|
+
name: 'Edge',
|
|
8
|
+
version: edgeRuntime,
|
|
9
|
+
isEdge: true
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// Check for specific runtimes
|
|
14
|
+
if (typeof process !== 'undefined' && process.versions) {
|
|
15
|
+
// Deno check
|
|
16
|
+
const denoGlobal = globalThis.Deno;
|
|
17
|
+
if (denoGlobal) {
|
|
18
|
+
return {
|
|
19
|
+
name: 'Deno',
|
|
20
|
+
version: denoGlobal.version?.deno,
|
|
21
|
+
isEdge: false
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Bun check
|
|
25
|
+
const versions = process.versions;
|
|
26
|
+
if ('bun' in versions && versions.bun) {
|
|
27
|
+
return {
|
|
28
|
+
name: 'Bun',
|
|
29
|
+
version: versions.bun,
|
|
30
|
+
isEdge: false
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Node.js check
|
|
34
|
+
if (versions.node) {
|
|
35
|
+
return {
|
|
36
|
+
name: 'Node.js',
|
|
37
|
+
version: versions.node,
|
|
38
|
+
isEdge: false
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Fallback: check for other edge indicators
|
|
43
|
+
const hasWebStreams = typeof ReadableStream !== 'undefined' &&
|
|
44
|
+
typeof WritableStream !== 'undefined';
|
|
45
|
+
const hasServiceWorkerGlobals = typeof Request !== 'undefined' &&
|
|
46
|
+
typeof Response !== 'undefined' &&
|
|
47
|
+
typeof fetch !== 'undefined';
|
|
48
|
+
if (hasWebStreams && hasServiceWorkerGlobals && typeof process === 'undefined') {
|
|
49
|
+
return {
|
|
50
|
+
name: 'Edge',
|
|
51
|
+
isEdge: true
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
name: 'Unknown',
|
|
56
|
+
isEdge: false
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const SIGNATURES = [
|
|
60
|
+
// Vercel - highest priority for Vercel-specific detection
|
|
61
|
+
{
|
|
62
|
+
platform: 'Vercel',
|
|
63
|
+
signatureVars: ['VERCEL', 'VERCEL_ENV', 'VERCEL_URL', 'VERCEL_REGION', 'VERCEL_BRANCH_URL', 'VERCEL_PROJECT_PRODUCTION_URL'],
|
|
64
|
+
url: (env) => {
|
|
65
|
+
// Check if running on Vercel
|
|
66
|
+
const isVercel = env.VERCEL === "1";
|
|
67
|
+
if (!isVercel) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
// Vercel environment
|
|
71
|
+
const vercelEnv = env.VERCEL_ENV;
|
|
72
|
+
// For preview deployments, use the branch URL if available
|
|
73
|
+
if (vercelEnv === "preview") {
|
|
74
|
+
const branchUrl = env.VERCEL_BRANCH_URL;
|
|
75
|
+
if (branchUrl) {
|
|
76
|
+
return `https://${branchUrl}`;
|
|
77
|
+
}
|
|
78
|
+
// Fallback to the general deployment URL
|
|
79
|
+
return env.VERCEL_URL ? `https://${env.VERCEL_URL}` : undefined;
|
|
80
|
+
}
|
|
81
|
+
// For production, use the production URL if available
|
|
82
|
+
if (vercelEnv === "production") {
|
|
83
|
+
const productionUrl = env.VERCEL_PROJECT_PRODUCTION_URL;
|
|
84
|
+
if (productionUrl) {
|
|
85
|
+
return `https://${productionUrl}`;
|
|
86
|
+
}
|
|
87
|
+
// Fallback to the general deployment URL
|
|
88
|
+
return env.VERCEL_URL ? `https://${env.VERCEL_URL}` : undefined;
|
|
89
|
+
}
|
|
90
|
+
// Default fallback for other environments
|
|
91
|
+
return env.VERCEL_URL ? `https://${env.VERCEL_URL}` : undefined;
|
|
92
|
+
},
|
|
93
|
+
priority: 100
|
|
94
|
+
},
|
|
95
|
+
// Edge Runtime - detect if running in edge environment
|
|
96
|
+
{
|
|
97
|
+
platform: 'Edge Runtime',
|
|
98
|
+
signatureVars: [],
|
|
99
|
+
detect: () => {
|
|
100
|
+
const runtime = detectRuntime();
|
|
101
|
+
return runtime.isEdge && runtime.name === 'Edge';
|
|
102
|
+
},
|
|
103
|
+
url: () => undefined,
|
|
104
|
+
priority: 95
|
|
105
|
+
},
|
|
106
|
+
// Netlify
|
|
107
|
+
{
|
|
108
|
+
platform: 'Netlify',
|
|
109
|
+
signatureVars: ['NETLIFY', 'NETLIFY_ENV', 'DEPLOY_URL', 'URL', 'SITE_NAME'],
|
|
110
|
+
url: (env) => env.NETLIFY_URL ?? env.DEPLOY_URL ?? env.URL,
|
|
111
|
+
priority: 90
|
|
112
|
+
},
|
|
113
|
+
// Cloudflare
|
|
114
|
+
{
|
|
115
|
+
platform: 'Cloudflare Pages',
|
|
116
|
+
signatureVars: ['CF_PAGES', 'CF_PAGES_URL', 'CF_PAGES_BRANCH'],
|
|
117
|
+
url: (env) => env.CF_PAGES_URL,
|
|
118
|
+
priority: 90
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
platform: 'Cloudflare Workers',
|
|
122
|
+
signatureVars: ['CF_WORKER', 'CLOUDFLARE_WORKER'],
|
|
123
|
+
detect: (env) => {
|
|
124
|
+
// Additional heuristics for Workers
|
|
125
|
+
return Boolean(env.CF_WORKER || env.CLOUDFLARE_WORKER ||
|
|
126
|
+
(typeof navigator !== 'undefined' && navigator.userAgent?.includes('Cloudflare-Workers')));
|
|
127
|
+
},
|
|
128
|
+
url: () => undefined,
|
|
129
|
+
priority: 85
|
|
130
|
+
},
|
|
131
|
+
// Deno Deploy
|
|
132
|
+
{
|
|
133
|
+
platform: 'Deno Deploy',
|
|
134
|
+
signatureVars: ['DENO_DEPLOYMENT_ID', 'DENO_REGION'],
|
|
135
|
+
detect: () => {
|
|
136
|
+
const runtime = detectRuntime();
|
|
137
|
+
return runtime.name === 'Deno' && Boolean(process.env.DENO_DEPLOYMENT_ID);
|
|
138
|
+
},
|
|
139
|
+
url: () => undefined,
|
|
140
|
+
priority: 85
|
|
141
|
+
},
|
|
142
|
+
// Supabase Edge Functions
|
|
143
|
+
{
|
|
144
|
+
platform: 'Supabase Edge Functions',
|
|
145
|
+
signatureVars: ['SUPABASE_URL', 'SUPABASE_ANON_KEY', 'SUPABASE_SERVICE_ROLE_KEY'],
|
|
146
|
+
detect: (env) => Boolean(env.SUPABASE_URL && (env.SUPABASE_ANON_KEY || env.SUPABASE_SERVICE_ROLE_KEY)),
|
|
147
|
+
url: (env) => env.SUPABASE_URL,
|
|
148
|
+
priority: 80
|
|
149
|
+
},
|
|
150
|
+
// AWS
|
|
151
|
+
{
|
|
152
|
+
platform: 'AWS Lambda',
|
|
153
|
+
signatureVars: ['AWS_LAMBDA_FUNCTION_NAME', 'AWS_EXECUTION_ENV', 'LAMBDA_TASK_ROOT'],
|
|
154
|
+
url: () => undefined,
|
|
155
|
+
priority: 80
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
platform: 'AWS Amplify',
|
|
159
|
+
signatureVars: ['AWS_APP_ID', 'AWS_BRANCH', 'AWS_CLONE_URL'],
|
|
160
|
+
url: (env) => env.AWS_CLONE_URL,
|
|
161
|
+
priority: 75
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
platform: 'AWS Elastic Beanstalk',
|
|
165
|
+
signatureVars: ['EB_ENVIRONMENT_NAME'],
|
|
166
|
+
url: () => undefined,
|
|
167
|
+
priority: 70
|
|
168
|
+
},
|
|
169
|
+
// Railway
|
|
170
|
+
{
|
|
171
|
+
platform: 'Railway',
|
|
172
|
+
signatureVars: ['RAILWAY_ENVIRONMENT', 'RAILWAY_PUBLIC_DOMAIN', 'RAILWAY_PROJECT_ID'],
|
|
173
|
+
url: (env) => env.RAILWAY_PUBLIC_DOMAIN ? `https://${env.RAILWAY_PUBLIC_DOMAIN}` : undefined,
|
|
174
|
+
priority: 75
|
|
175
|
+
},
|
|
176
|
+
// Render
|
|
177
|
+
{
|
|
178
|
+
platform: 'Render',
|
|
179
|
+
signatureVars: ['RENDER', 'RENDER_EXTERNAL_URL', 'RENDER_SERVICE_ID'],
|
|
180
|
+
url: (env) => env.RENDER_EXTERNAL_URL,
|
|
181
|
+
priority: 75
|
|
182
|
+
},
|
|
183
|
+
// Heroku
|
|
184
|
+
{
|
|
185
|
+
platform: 'Heroku',
|
|
186
|
+
signatureVars: ['HEROKU_APP_NAME', 'DYNO', 'HEROKU_DYNO_ID'],
|
|
187
|
+
url: (env) => env.HEROKU_APP_NAME ? `https://${env.HEROKU_APP_NAME}.herokuapp.com` : undefined,
|
|
188
|
+
priority: 75
|
|
189
|
+
},
|
|
190
|
+
// Fly.io
|
|
191
|
+
{
|
|
192
|
+
platform: 'Fly.io',
|
|
193
|
+
signatureVars: ['FLY_APP_NAME', 'FLY_REGION'],
|
|
194
|
+
url: (env) => env.FLY_APP_NAME ? `https://${env.FLY_APP_NAME}.fly.dev` : undefined,
|
|
195
|
+
priority: 75
|
|
196
|
+
},
|
|
197
|
+
// DigitalOcean
|
|
198
|
+
{
|
|
199
|
+
platform: 'DigitalOcean App',
|
|
200
|
+
signatureVars: ['DO_APP_NAME', 'DO_DEPLOYMENT_ID', 'DIGITALOCEAN_APP_NAME'],
|
|
201
|
+
url: () => undefined,
|
|
202
|
+
priority: 70
|
|
203
|
+
},
|
|
204
|
+
// GitHub/GitLab Pages
|
|
205
|
+
{
|
|
206
|
+
platform: 'GitHub Pages',
|
|
207
|
+
signatureVars: ['GITHUB_PAGES', 'GITHUB_REPOSITORY'],
|
|
208
|
+
detect: (env) => Boolean(env.GITHUB_PAGES || (env.GITHUB_REPOSITORY && env.GITHUB_ACTIONS)),
|
|
209
|
+
url: (env) => {
|
|
210
|
+
if (env.GITHUB_REPOSITORY) {
|
|
211
|
+
const [owner, repo] = env.GITHUB_REPOSITORY.split('/');
|
|
212
|
+
return `https://${owner}.github.io/${repo}`;
|
|
213
|
+
}
|
|
214
|
+
return undefined;
|
|
215
|
+
},
|
|
216
|
+
priority: 60
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
platform: 'GitLab Pages',
|
|
220
|
+
signatureVars: ['GITLAB_CI', 'CI_PAGES_URL'],
|
|
221
|
+
detect: (env) => Boolean(env.GITLAB_CI && env.CI_PAGES_URL),
|
|
222
|
+
url: (env) => env.CI_PAGES_URL,
|
|
223
|
+
priority: 60
|
|
224
|
+
},
|
|
225
|
+
// Azure
|
|
226
|
+
{
|
|
227
|
+
platform: 'Azure Functions',
|
|
228
|
+
signatureVars: ['FUNCTIONS_WORKER_RUNTIME', 'WEBSITE_SITE_NAME', 'AZURE_FUNCTIONS_ENVIRONMENT'],
|
|
229
|
+
url: (env) => env.WEBSITE_SITE_NAME ? `https://${env.WEBSITE_SITE_NAME}.azurewebsites.net` : undefined,
|
|
230
|
+
priority: 70
|
|
231
|
+
},
|
|
232
|
+
// GCP
|
|
233
|
+
{
|
|
234
|
+
platform: 'GCP Cloud Functions',
|
|
235
|
+
signatureVars: ['FUNCTION_SIGNATURE_TYPE', 'K_SERVICE', 'FUNCTION_TARGET', 'GCP_PROJECT'],
|
|
236
|
+
url: () => undefined,
|
|
237
|
+
priority: 70
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
platform: 'GCP Cloud Run',
|
|
241
|
+
signatureVars: ['K_REVISION', 'CLOUD_RUN_JOB', 'K_CONFIGURATION'],
|
|
242
|
+
url: () => undefined,
|
|
243
|
+
priority: 70
|
|
244
|
+
},
|
|
245
|
+
// Kubernetes
|
|
246
|
+
{
|
|
247
|
+
platform: 'Kubernetes',
|
|
248
|
+
signatureVars: ['KUBERNETES_SERVICE_HOST', 'KUBERNETES_PORT', 'KUBERNETES_PORT_443_TCP'],
|
|
249
|
+
url: () => undefined,
|
|
250
|
+
priority: 50
|
|
251
|
+
},
|
|
252
|
+
// Bun.sh (if it becomes a hosting platform)
|
|
253
|
+
{
|
|
254
|
+
platform: 'Bun.sh',
|
|
255
|
+
signatureVars: ['BUN_ENV', 'BUN_DEPLOYMENT_ID'],
|
|
256
|
+
detect: () => {
|
|
257
|
+
const runtime = detectRuntime();
|
|
258
|
+
return runtime.name === 'Bun' && Boolean(process.env.BUN_DEPLOYMENT_ID);
|
|
259
|
+
},
|
|
260
|
+
url: () => undefined,
|
|
261
|
+
priority: 75
|
|
262
|
+
},
|
|
263
|
+
].sort((a, b) => (b.priority || 0) - (a.priority || 0));
|
|
264
|
+
async function tryReadCgroup() {
|
|
265
|
+
if (typeof process === 'undefined' || !process.versions?.node)
|
|
266
|
+
return null;
|
|
267
|
+
try {
|
|
268
|
+
// Lazy import avoids breaking non‑Node runtimes like Workers / Deno
|
|
269
|
+
const mod = await import('node:fs/promises');
|
|
270
|
+
return await mod.readFile('/proc/1/cgroup', 'utf8');
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function hasFetch() {
|
|
277
|
+
return typeof fetch === 'function';
|
|
278
|
+
}
|
|
279
|
+
function isEdgeRuntime() {
|
|
280
|
+
const runtime = detectRuntime();
|
|
281
|
+
return runtime.isEdge;
|
|
282
|
+
}
|
|
283
|
+
// Enhanced container detection
|
|
284
|
+
async function detectContainer() {
|
|
285
|
+
const cgroup = await tryReadCgroup();
|
|
286
|
+
if (cgroup) {
|
|
287
|
+
// More comprehensive container detection
|
|
288
|
+
return /docker|kubepods|containerd|lxc|garden|podman/.test(cgroup);
|
|
289
|
+
}
|
|
290
|
+
// Additional container indicators
|
|
291
|
+
if (typeof process !== 'undefined') {
|
|
292
|
+
return Boolean(process.env.DOCKER_CONTAINER ||
|
|
293
|
+
process.env.KUBERNETES_SERVICE_HOST ||
|
|
294
|
+
process.env.container ||
|
|
295
|
+
process.env.CONTAINER_NAME);
|
|
296
|
+
}
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
// Cache for platform detection to avoid repeated expensive operations
|
|
300
|
+
const detectionCache = new Map();
|
|
301
|
+
const cacheTimeout = 60000; // 1 minute
|
|
302
|
+
let lastCacheTime = 0;
|
|
303
|
+
export async function detectPlatform(env = process.env) {
|
|
304
|
+
// Check cache first
|
|
305
|
+
const cacheKey = JSON.stringify(env);
|
|
306
|
+
const now = Date.now();
|
|
307
|
+
if (detectionCache.has(cacheKey) && (now - lastCacheTime) < cacheTimeout) {
|
|
308
|
+
return detectionCache.get(cacheKey);
|
|
309
|
+
}
|
|
310
|
+
let detectedPlatform = 'Unknown';
|
|
311
|
+
// 1. Signature-based detection (ordered by priority)
|
|
312
|
+
for (const sig of SIGNATURES) {
|
|
313
|
+
// Check environment variables
|
|
314
|
+
const hasEnvVar = sig.signatureVars.some((v) => v in env);
|
|
315
|
+
// Check custom detection logic
|
|
316
|
+
const hasCustomDetection = sig.detect ? sig.detect(env) : false;
|
|
317
|
+
if (hasEnvVar || hasCustomDetection) {
|
|
318
|
+
detectedPlatform = sig.platform;
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// 2. Container runtime heuristics (if not already detected)
|
|
323
|
+
if (detectedPlatform === 'Unknown') {
|
|
324
|
+
const isContainer = await detectContainer();
|
|
325
|
+
if (isContainer) {
|
|
326
|
+
detectedPlatform = 'Docker';
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// 3. Cloud VM detection via metadata API (skip if no fetch or already detected)
|
|
330
|
+
if (detectedPlatform === 'Unknown' && hasFetch()) {
|
|
331
|
+
try {
|
|
332
|
+
const controller = new AbortController();
|
|
333
|
+
setTimeout(() => controller.abort(), 500); // Increased timeout slightly
|
|
334
|
+
const res = await fetch('http://169.254.169.254/latest/meta-data/', {
|
|
335
|
+
signal: controller.signal
|
|
336
|
+
});
|
|
337
|
+
if (res.ok) {
|
|
338
|
+
detectedPlatform = 'Bare‑metal';
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
// Ignore failures - this is just a heuristic
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Cache the result
|
|
346
|
+
detectionCache.set(cacheKey, detectedPlatform);
|
|
347
|
+
lastCacheTime = now;
|
|
348
|
+
return detectedPlatform;
|
|
349
|
+
}
|
|
350
|
+
export function generatePotentialUrls(env = process.env) {
|
|
351
|
+
const urls = new Set();
|
|
352
|
+
const defaultPort = 3000;
|
|
353
|
+
// Get URLs from platform signatures
|
|
354
|
+
for (const sig of SIGNATURES) {
|
|
355
|
+
const url = sig.url(env, defaultPort);
|
|
356
|
+
if (url)
|
|
357
|
+
urls.add(url);
|
|
358
|
+
}
|
|
359
|
+
// Additional URL sources
|
|
360
|
+
const additionalUrls = [
|
|
361
|
+
env.PUBLIC_URL,
|
|
362
|
+
env.SITE_URL,
|
|
363
|
+
env.BASE_URL,
|
|
364
|
+
env.APP_URL,
|
|
365
|
+
env.FRONTEND_URL
|
|
366
|
+
].filter(Boolean);
|
|
367
|
+
additionalUrls.forEach(url => urls.add(url));
|
|
368
|
+
// Platform-specific URL generation
|
|
369
|
+
if (env.FLY_APP_NAME)
|
|
370
|
+
urls.add(`https://${env.FLY_APP_NAME}.fly.dev`);
|
|
371
|
+
if (env.RAILWAY_PUBLIC_DOMAIN)
|
|
372
|
+
urls.add(`https://${env.RAILWAY_PUBLIC_DOMAIN}`);
|
|
373
|
+
if (env.RENDER_EXTERNAL_URL)
|
|
374
|
+
urls.add(env.RENDER_EXTERNAL_URL);
|
|
375
|
+
// Fallback URLs
|
|
376
|
+
if (urls.size === 0) {
|
|
377
|
+
urls.add(`http://localhost:${defaultPort}`);
|
|
378
|
+
urls.add(`http://127.0.0.1:${defaultPort}`);
|
|
379
|
+
}
|
|
380
|
+
return [...urls];
|
|
381
|
+
}
|
|
382
|
+
export async function gatherPlatformInfo(env = process.env) {
|
|
383
|
+
const [platform, isContainer, runtime] = await Promise.all([
|
|
384
|
+
detectPlatform(env),
|
|
385
|
+
detectContainer(),
|
|
386
|
+
Promise.resolve(detectRuntime())
|
|
387
|
+
]);
|
|
388
|
+
const urls = generatePotentialUrls(env);
|
|
389
|
+
const isEdge = isEdgeRuntime();
|
|
390
|
+
const match = SIGNATURES.find((s) => s.platform === platform);
|
|
391
|
+
const signatureEnv = {};
|
|
392
|
+
if (match) {
|
|
393
|
+
for (const key of match.signatureVars) {
|
|
394
|
+
if (env[key]) {
|
|
395
|
+
signatureEnv[key] = env[key];
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// Detect if running on cloud VM (simplified heuristic)
|
|
400
|
+
const isCloudVM = platform === 'Bare‑metal' || Boolean(env.AWS_INSTANCE_METADATA_DISABLED === 'false' ||
|
|
401
|
+
env.GOOGLE_CLOUD_PROJECT ||
|
|
402
|
+
env.AZURE_SUBSCRIPTION_ID);
|
|
403
|
+
return {
|
|
404
|
+
platform,
|
|
405
|
+
runtime,
|
|
406
|
+
signatureEnv,
|
|
407
|
+
urls,
|
|
408
|
+
isEdgeRuntime: isEdge,
|
|
409
|
+
isContainer,
|
|
410
|
+
isCloudVM
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Check if the current environment is a specific platform
|
|
415
|
+
*/
|
|
416
|
+
export async function isPlatform(targetPlatform, env) {
|
|
417
|
+
const platform = await detectPlatform(env);
|
|
418
|
+
return platform === targetPlatform;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Get a summary of the current runtime environment
|
|
422
|
+
*/
|
|
423
|
+
export function getRuntimeSummary() {
|
|
424
|
+
const runtime = detectRuntime();
|
|
425
|
+
const parts = [runtime.name];
|
|
426
|
+
if (runtime.version) {
|
|
427
|
+
parts.push(`v${runtime.version}`);
|
|
428
|
+
}
|
|
429
|
+
if (runtime.isEdge) {
|
|
430
|
+
parts.push('(Edge)');
|
|
431
|
+
}
|
|
432
|
+
return parts.join(' ');
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Clear the platform detection cache (useful for testing)
|
|
436
|
+
*/
|
|
437
|
+
export function clearDetectionCache() {
|
|
438
|
+
detectionCache.clear();
|
|
439
|
+
lastCacheTime = 0;
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=platform-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-detection.js","sourceRoot":"","sources":["../../../src/handler/server/platform-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { McpServer, RegisteredTool, ToolCallback } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import type { ZodRawShape } from "zod";
|
|
4
|
+
import type { FacilitatorConfig, Network, Price } from "x402/types";
|
|
5
|
+
import { type HCSAuditConfig } from "../../proxy/hooks/hcs-audit-hook.js";
|
|
6
|
+
export type RecipientWithTestnet = {
|
|
7
|
+
address: string;
|
|
8
|
+
isTestnet?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type X402Config = {
|
|
11
|
+
recipient: Partial<Record<Network, string>> | Partial<Record<"evm", RecipientWithTestnet>>;
|
|
12
|
+
facilitator: FacilitatorConfig;
|
|
13
|
+
version?: number;
|
|
14
|
+
/** Enable HCS audit trail — logs every successful payment to Hedera Consensus Service */
|
|
15
|
+
hcsAudit?: HCSAuditConfig;
|
|
16
|
+
};
|
|
17
|
+
export interface X402AugmentedServer {
|
|
18
|
+
paidTool<Args extends ZodRawShape>(name: string, description: string, price: Price, paramsSchema: Args, annotations: ToolAnnotations, cb: ToolCallback<Args>): RegisteredTool;
|
|
19
|
+
}
|
|
20
|
+
export declare function withX402<S extends McpServer>(server: S, cfg: X402Config): S & X402AugmentedServer;
|
|
21
|
+
//# sourceMappingURL=with-x402.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-x402.d.ts","sourceRoot":"","sources":["../../../../src/handler/server/plugins/with-x402.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAKvC,OAAO,KAAK,EACR,iBAAiB,EACjB,OAAO,EAGP,KAAK,EACR,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAQxF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EACL,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACjD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,SAAS,WAAW,EAC/B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,IAAI,EAClB,WAAW,EAAE,eAAe,EAC5B,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,GACrB,cAAc,CAAC;CACnB;AAQD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAC1C,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,UAAU,GACd,CAAC,GAAG,mBAAmB,CAiUzB"}
|