@oobe-protocol-labs/synapse-sap-sdk 0.10.1 → 0.11.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.
@@ -0,0 +1,633 @@
1
+ /**
2
+ * @module registries/fairscale
3
+ * @description FairScale reputation aggregation registry.
4
+ *
5
+ * Wraps both FairScale REST APIs:
6
+ * - **Agent & Credit API** (`agent-api.fairscale.xyz`) — agent trust score,
7
+ * trust gate, batch scoring, composable score, agent profile, score
8
+ * history, directory, leaderboard, credit assessment.
9
+ * - **Human Score API** (`api.fairscale.xyz`) — human wallet fingerprint,
10
+ * FairScore, on-chain features, badges.
11
+ *
12
+ * The killer feature is {@link FairScaleRegistry.aggregate}: it merges
13
+ * SAP's **on-chain** reputation (`AgentAccount.reputationScore` +
14
+ * feedback count + activity signals) with FairScale's **off-chain**
15
+ * trust score into a single normalised, weight-tunable signal. Apps
16
+ * therefore get a multi-source reputation rather than relying on either
17
+ * registry alone.
18
+ *
19
+ * Zero runtime dependencies — uses native `fetch` (Node ≥18, browsers,
20
+ * Edge runtimes). Auth via `fairkey` (or `X-Api-Key` for credit).
21
+ *
22
+ * @category Registries
23
+ * @since v0.11.0
24
+ *
25
+ * @example Standalone usage (just the FairScale wrapper)
26
+ * ```ts
27
+ * const fs = client.fairscale;
28
+ * const score = await fs.score(agentWallet);
29
+ * const allowed = await fs.trustGate(agentWallet, { minScore: 60 });
30
+ * const profile = await fs.agentProfile(agentWallet);
31
+ * const human = await fs.human.score(userWallet);
32
+ * ```
33
+ *
34
+ * @example Aggregated reputation (SAP + FairScale)
35
+ * ```ts
36
+ * const merged = await client.fairscale.aggregate(agentWallet, {
37
+ * weights: { sap: 0.4, fairscale: 0.6 },
38
+ * require: { sapMinFeedbacks: 1 },
39
+ * });
40
+ * console.log(merged.combined.score, merged.combined.tier);
41
+ * ```
42
+ */
43
+ import { SapError } from "../errors";
44
+ import { DiscoveryRegistry } from "./discovery";
45
+ // ═══════════════════════════════════════════════════════════════════
46
+ // Errors
47
+ // ═══════════════════════════════════════════════════════════════════
48
+ /**
49
+ * @name FairScaleError
50
+ * @description Thrown for any non-2xx response from a FairScale endpoint
51
+ * or for client-side validation failures (missing API key, invalid
52
+ * weights, etc.).
53
+ * @category Errors
54
+ * @since v0.11.0
55
+ * @extends SapError
56
+ */
57
+ export class FairScaleError extends SapError {
58
+ /** HTTP status from FairScale (0 for client-side errors). */
59
+ status;
60
+ /** FairScale error code from the response body, if any. */
61
+ upstreamCode;
62
+ constructor(message, status, upstreamCode) {
63
+ super(message, "FAIRSCALE_ERROR");
64
+ this.name = "FairScaleError";
65
+ this.status = status;
66
+ this.upstreamCode = upstreamCode;
67
+ Object.setPrototypeOf(this, new.target.prototype);
68
+ }
69
+ }
70
+ // ═══════════════════════════════════════════════════════════════════
71
+ // Constants — verified against docs.fairscale.xyz
72
+ // ═══════════════════════════════════════════════════════════════════
73
+ /**
74
+ * @name FAIRSCALE
75
+ * @description Public, documented constants for the FairScale platform.
76
+ * Verified against the docs at https://docs.fairscale.xyz on 2026-04-17.
77
+ * Use these instead of hard-coding strings — guarantees consistency across
78
+ * the SDK and any consumer code.
79
+ * @category Registries
80
+ * @since v0.11.0
81
+ */
82
+ export const FAIRSCALE = Object.freeze({
83
+ /** Agent & Credit API host. */
84
+ AGENT_API: "https://agent-api.fairscale.xyz",
85
+ /** Human Score API host. */
86
+ HUMAN_API: "https://api.fairscale.xyz",
87
+ /** Default request timeout matching the official SDK (10s). */
88
+ DEFAULT_TIMEOUT_MS: 10_000,
89
+ /** Server-side cache TTL on every endpoint (15 min). */
90
+ CACHE_TTL_SECONDS: 15 * 60,
91
+ /** Max wallets per `POST /v1/score/batch` request. */
92
+ BATCH_MAX_WALLETS: 25,
93
+ /** API key prefix. */
94
+ API_KEY_PREFIX: "zpka_",
95
+ /** Default `min_score` for `/v1/trust-gate`. */
96
+ DEFAULT_TRUST_GATE_MIN_SCORE: 40,
97
+ /** x402 micropayment metadata (Solana mainnet). */
98
+ X402: Object.freeze({
99
+ /** USDC mint on Solana mainnet. */
100
+ USDC_MINT: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
101
+ /** Wallet receiving x402 payments. */
102
+ PAY_TO: "fairAUEuR1SCcHL254Vb3F3XpUWLruJ2a11f6QfANEN",
103
+ /** Solana mainnet x402 network slug. */
104
+ NETWORK: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
105
+ /** Facilitator host. */
106
+ FACILITATOR: "https://x402.dexter.cash",
107
+ /** Price in USDC base units (micro-USDC) per agent / trust call. */
108
+ PRICE_AGENT_USDC_BASE: 5_000,
109
+ /** Price in USDC base units (micro-USDC) per credit assessment. */
110
+ PRICE_CREDIT_USDC_BASE: 500_000,
111
+ /** Default x402 settlement timeout (seconds). */
112
+ MAX_TIMEOUT_SECONDS: 60,
113
+ }),
114
+ /** Documented agent-tier ranges (inclusive). */
115
+ AGENT_TIER_RANGES: Object.freeze({
116
+ bronze: [0, 39],
117
+ silver: [40, 54],
118
+ gold: [55, 69],
119
+ platinum: [70, 84],
120
+ diamond: [85, 100],
121
+ }),
122
+ /** Documented credit `risk_band` ranges (inclusive). */
123
+ RISK_BAND_RANGES: Object.freeze({
124
+ decline: [0, 24],
125
+ deep_subprime: [25, 44],
126
+ subprime: [45, 59],
127
+ near_prime: [60, 74],
128
+ prime: [75, 100],
129
+ }),
130
+ /** Plan tiers — daily request quota / per-minute rate limit. */
131
+ PLAN_QUOTAS: Object.freeze({
132
+ free: { dailyRequests: 1_000, rpm: 10 },
133
+ builder: { dailyRequests: 20_000, rpm: 100 },
134
+ scale: { dailyRequests: 50_000, rpm: 300 },
135
+ pro: { dailyRequests: 100_000, rpm: 600 },
136
+ }),
137
+ /** Pillar weights for `/v1/score/ai` presets, exactly as documented. */
138
+ PRESET_WEIGHTS: Object.freeze({
139
+ default: { verification: 0.30, wallet_history: 0.25, work_history: 0.10, network_quality: 0.25, peer_reputation: 0.10 },
140
+ trust_focused: { verification: 0.50, wallet_history: 0.20, work_history: 0.10, network_quality: 0.10, peer_reputation: 0.10 },
141
+ work_focused: { verification: 0.20, wallet_history: 0.15, work_history: 0.40, network_quality: 0.15, peer_reputation: 0.10 },
142
+ defi: { verification: 0.25, wallet_history: 0.30, work_history: 0.10, network_quality: 0.25, peer_reputation: 0.10 },
143
+ hiring: { verification: 0.35, wallet_history: 0.15, work_history: 0.25, network_quality: 0.15, peer_reputation: 0.10 },
144
+ }),
145
+ /** Allowed sort fields for `/v1/directory` and `/v1/leaderboard`. */
146
+ DIRECTORY_SORT_FIELDS: [
147
+ "agent_fairscore",
148
+ "verification",
149
+ "wallet_history",
150
+ "work_history",
151
+ "network_quality",
152
+ "peer_reputation",
153
+ "reliability",
154
+ "track_record",
155
+ "economic_stake",
156
+ "ecosystem",
157
+ ],
158
+ /** Documented machine-readable error codes. */
159
+ ERROR_CODES: [
160
+ "missing_wallet",
161
+ "invalid_wallet",
162
+ "invalid_preset",
163
+ "weights_must_sum_to_1",
164
+ "missing_weights",
165
+ "too_many_wallets",
166
+ "daily_limit_exceeded",
167
+ "upstream_error",
168
+ ],
169
+ });
170
+ const DEFAULT_BASE_URL = "https://agent-api.fairscale.xyz";
171
+ const DEFAULT_HUMAN_BASE_URL = "https://api.fairscale.xyz";
172
+ const DEFAULT_TIMEOUT_MS = 10_000;
173
+ // ═══════════════════════════════════════════════════════════════════
174
+ // Registry
175
+ // ═══════════════════════════════════════════════════════════════════
176
+ /**
177
+ * @name FairScaleRegistry
178
+ * @description High-level FairScale client + SAP reputation aggregator.
179
+ * Exposed lazily as `client.fairscale`.
180
+ * @category Registries
181
+ * @since v0.11.0
182
+ */
183
+ export class FairScaleRegistry {
184
+ #program;
185
+ #apiKey;
186
+ #baseUrl;
187
+ #humanBaseUrl;
188
+ #timeoutMs;
189
+ #fetch;
190
+ #discovery;
191
+ #human;
192
+ constructor(program, config = {}) {
193
+ this.#program = program;
194
+ this.#apiKey =
195
+ config.apiKey ??
196
+ (typeof process !== "undefined"
197
+ ? process.env?.FAIRSCALE_API_KEY
198
+ : undefined);
199
+ this.#baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
200
+ this.#humanBaseUrl = (config.humanBaseUrl ?? DEFAULT_HUMAN_BASE_URL).replace(/\/+$/, "");
201
+ this.#timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
202
+ if (config.fetch) {
203
+ this.#fetch = config.fetch;
204
+ }
205
+ else if (typeof fetch !== "undefined") {
206
+ this.#fetch = fetch.bind(globalThis);
207
+ }
208
+ else {
209
+ throw new FairScaleError("global `fetch` not available — pass `config.fetch`", 0, "no_fetch");
210
+ }
211
+ }
212
+ /** Lazy DiscoveryRegistry, used by `aggregate()` to read on-chain SAP state. */
213
+ get #disc() {
214
+ return (this.#discovery ??= new DiscoveryRegistry(this.#program));
215
+ }
216
+ /** Human Score API namespace (`client.fairscale.human.*`). */
217
+ get human() {
218
+ return (this.#human ??= new HumanScoreNamespace(this.#humanBaseUrl, this.#apiKey, this.#timeoutMs, this.#fetch));
219
+ }
220
+ // ── Agent & Credit API ────────────────────────────────────────────
221
+ /**
222
+ * @description `GET /v1/score` — composite trust score.
223
+ */
224
+ score(agent, opts = {}) {
225
+ const wallet = toWallet(agent);
226
+ const url = this.#url("/v1/score", { wallet, task: opts.task });
227
+ return this.#getJson(url, opts);
228
+ }
229
+ /**
230
+ * @description `GET /v1/trust-gate` — binary allow/deny.
231
+ */
232
+ trustGate(agent, opts = {}) {
233
+ const wallet = toWallet(agent);
234
+ const url = this.#url("/v1/trust-gate", {
235
+ wallet,
236
+ task: opts.task,
237
+ min_score: opts.minScore,
238
+ require_verification: opts.requireVerification,
239
+ });
240
+ return this.#getJson(url, opts);
241
+ }
242
+ /**
243
+ * @description `POST /v1/score/batch` — up to 25 wallets per call.
244
+ * Splits larger inputs into chunks of 25 and merges results.
245
+ */
246
+ async scoreBatch(agents, opts = {}) {
247
+ const wallets = agents.map(toWallet);
248
+ if (wallets.length === 0) {
249
+ return { total: 0, scored: 0, results: [] };
250
+ }
251
+ const chunks = [];
252
+ for (let i = 0; i < wallets.length; i += 25) {
253
+ chunks.push(wallets.slice(i, i + 25));
254
+ }
255
+ const responses = await Promise.all(chunks.map((chunk) => this.#postJson(this.#url("/v1/score/batch"), opts, {
256
+ wallets: chunk,
257
+ task: opts.task,
258
+ })));
259
+ const merged = {
260
+ total: wallets.length,
261
+ scored: responses.reduce((acc, r) => acc + r.scored, 0),
262
+ results: responses.flatMap((r) => r.results),
263
+ meta: responses[0]?.meta,
264
+ };
265
+ return merged;
266
+ }
267
+ /**
268
+ * @description `GET /v1/score/ai` — composable score with preset or custom weights.
269
+ */
270
+ scoreAI(agent, opts) {
271
+ if (!opts.preset && !opts.weights) {
272
+ throw new FairScaleError("scoreAI requires either `preset` or `weights`", 0, "missing_preset_or_weights");
273
+ }
274
+ if (opts.weights) {
275
+ const sum = Object.values(opts.weights).reduce((a, b) => a + (b ?? 0), 0);
276
+ if (Math.abs(sum - 1) > 0.02) {
277
+ throw new FairScaleError(`custom weights must sum to 1.0 (±0.02), got ${sum}`, 0, "weights_must_sum_to_1");
278
+ }
279
+ }
280
+ const url = this.#url("/v1/score/ai", {
281
+ wallet: toWallet(agent),
282
+ preset: opts.preset,
283
+ ...(opts.weights ?? {}),
284
+ });
285
+ return this.#getJson(url, opts);
286
+ }
287
+ /**
288
+ * @description `GET /v1/agent` — full agent profile (registry details + scoring data).
289
+ */
290
+ agentProfile(agent, opts = {}) {
291
+ const url = this.#url("/v1/agent", { wallet: toWallet(agent) });
292
+ return this.#getJson(url, opts);
293
+ }
294
+ /**
295
+ * @description `GET /v1/score-history` — score trend over time.
296
+ */
297
+ scoreHistory(agent, opts = {}) {
298
+ const url = this.#url("/v1/score-history", { wallet: toWallet(agent) });
299
+ return this.#getJson(url, opts);
300
+ }
301
+ /**
302
+ * @description `GET /v1/directory` — query the indexed agent directory.
303
+ */
304
+ directory(opts = {}) {
305
+ const url = this.#url("/v1/directory", {
306
+ page: opts.page,
307
+ limit: opts.limit,
308
+ sort: opts.sort,
309
+ min_score: opts.minScore,
310
+ verified_only: opts.verifiedOnly,
311
+ recommendation: opts.recommendation,
312
+ source: opts.source,
313
+ search: opts.search,
314
+ has_attestations: opts.hasAttestations,
315
+ });
316
+ return this.#getJson(url, opts);
317
+ }
318
+ /**
319
+ * @description `GET /v1/leaderboard` — top-scoring agents by metric.
320
+ */
321
+ leaderboard(opts = {}) {
322
+ const url = this.#url("/v1/leaderboard", {
323
+ metric: opts.metric,
324
+ limit: opts.limit,
325
+ });
326
+ return this.#getJson(url, opts);
327
+ }
328
+ /**
329
+ * @description `GET /v1/credit` — full credit assessment ($0.50 USDC per call).
330
+ * Uses `X-Api-Key` header instead of `fairkey`. Wire-format for `nocache`
331
+ * is `0|1` per the docs; the SDK accepts a boolean and converts it.
332
+ */
333
+ credit(agent, opts = {}) {
334
+ const url = this.#url("/v1/credit", {
335
+ wallet: toWallet(agent),
336
+ amount: opts.amount,
337
+ nocache: opts.nocache === undefined ? undefined : opts.nocache ? 1 : 0,
338
+ });
339
+ return this.#getJson(url, opts, {
340
+ authHeader: "X-Api-Key",
341
+ extraHeaders: opts.socialIdentity
342
+ ? { "x-social-identity": opts.socialIdentity }
343
+ : undefined,
344
+ });
345
+ }
346
+ // ── Aggregation (SAP + FairScale) ─────────────────────────────────
347
+ /**
348
+ * @description Merge SAP on-chain reputation with FairScale into a single
349
+ * weighted signal. Falls back gracefully if either source is unavailable.
350
+ *
351
+ * @param agentWallet - The agent's owner wallet (NOT the agent PDA).
352
+ * @param opts - Weights, gating rules, and per-call overrides.
353
+ * @returns {Promise<AggregatedReputation>}
354
+ *
355
+ * @example
356
+ * ```ts
357
+ * const r = await client.fairscale.aggregate(agentWallet, {
358
+ * weights: { sap: 0.4, fairscale: 0.6 },
359
+ * require: { sapMinFeedbacks: 2 },
360
+ * });
361
+ * if (r.combined.tier === "high" || r.combined.tier === "elite") accept();
362
+ * ```
363
+ */
364
+ async aggregate(agentWallet, opts = {}) {
365
+ const w = opts.weights ?? { sap: 0.5, fairscale: 0.5 };
366
+ if (Math.abs(w.sap + w.fairscale - 1) > 0.01) {
367
+ throw new FairScaleError(`aggregate weights must sum to 1.0 (±0.01), got ${w.sap + w.fairscale}`, 0, "weights_must_sum_to_1");
368
+ }
369
+ const minFeedbacks = opts.require?.sapMinFeedbacks ?? 0;
370
+ const [sapProfile, fsScore] = await Promise.allSettled([
371
+ this.#disc.getAgentProfile(agentWallet),
372
+ this.score(agentWallet, opts),
373
+ ]);
374
+ const notes = [];
375
+ // ── SAP slice ───────────────────────────────────────────────
376
+ const sapResult = sapProfile.status === "fulfilled" ? sapProfile.value : null;
377
+ const sapScore = extractSapScore(sapResult, minFeedbacks, notes);
378
+ // ── FairScale slice ─────────────────────────────────────────
379
+ const fairscale = fsScore.status === "fulfilled" ? fsScore.value : null;
380
+ if (fsScore.status === "rejected") {
381
+ notes.push(`fairscale_unavailable:${fsScore.reason?.message ?? "unknown"}`);
382
+ }
383
+ if (fairscale?.red_flags?.length) {
384
+ notes.push(`red_flags:${fairscale.red_flags.length}`);
385
+ }
386
+ if (fairscale?.meta?.from_cache)
387
+ notes.push("fairscale_cache_hit");
388
+ // ── Blend ───────────────────────────────────────────────────
389
+ const sapAvail = sapScore !== null ? w.sap : 0;
390
+ const fsAvail = fairscale ? w.fairscale : 0;
391
+ const totalW = sapAvail + fsAvail;
392
+ let combinedScore = 0;
393
+ let weights = { sap: 0, fairscale: 0 };
394
+ if (totalW === 0) {
395
+ if (opts.strict) {
396
+ throw new FairScaleError("no reputation source available (strict mode)", 0, "no_source");
397
+ }
398
+ notes.push("no_source");
399
+ }
400
+ else {
401
+ const sapNorm = sapAvail / totalW;
402
+ const fsNorm = fsAvail / totalW;
403
+ combinedScore =
404
+ (sapScore ?? 0) * sapNorm + (fairscale?.score ?? 0) * fsNorm;
405
+ weights = { sap: round2(sapNorm), fairscale: round2(fsNorm) };
406
+ }
407
+ // ── Confidence ──────────────────────────────────────────────
408
+ let confidence = 1;
409
+ if (sapScore === null)
410
+ confidence -= 0.35;
411
+ if (!fairscale)
412
+ confidence -= 0.35;
413
+ if (sapResult && sapResult.identity.totalFeedbacks < 3)
414
+ confidence -= 0.1;
415
+ if (fairscale?.meta?.from_cache)
416
+ confidence -= 0.05;
417
+ if (fairscale?.red_flags?.length) {
418
+ confidence -= Math.min(0.2, fairscale.red_flags.length * 0.05);
419
+ }
420
+ confidence = Math.max(0, Math.min(1, confidence));
421
+ return {
422
+ wallet: agentWallet.toBase58(),
423
+ sap: {
424
+ registered: sapResult !== null,
425
+ score: sapScore,
426
+ totalFeedbacks: sapResult?.identity.totalFeedbacks ?? 0,
427
+ totalCallsServed: sapResult?.identity.totalCallsServed.toString() ?? "0",
428
+ isActive: sapResult?.identity.isActive ?? false,
429
+ },
430
+ fairscale,
431
+ combined: {
432
+ score: round2(Math.max(0, Math.min(100, combinedScore))),
433
+ tier: bucketTier(combinedScore),
434
+ confidence: round2(confidence),
435
+ weights,
436
+ notes,
437
+ },
438
+ meta: {
439
+ provider: "SAP+FairScale",
440
+ computedAt: new Date().toISOString(),
441
+ },
442
+ };
443
+ }
444
+ // ── HTTP plumbing ─────────────────────────────────────────────────
445
+ #url(path, params) {
446
+ const u = new URL(this.#baseUrl + path);
447
+ if (params) {
448
+ for (const [k, v] of Object.entries(params)) {
449
+ if (v === undefined || v === null)
450
+ continue;
451
+ u.searchParams.set(k, String(v));
452
+ }
453
+ }
454
+ return u.toString();
455
+ }
456
+ async #getJson(url, opts, extra = {}) {
457
+ return this.#request(url, "GET", undefined, opts, extra.authHeader, extra.extraHeaders);
458
+ }
459
+ async #postJson(url, opts, body) {
460
+ return this.#request(url, "POST", body, opts);
461
+ }
462
+ async #request(url, method, body, opts, authHeader = "fairkey", extraHeaders) {
463
+ const apiKey = opts.apiKey ?? this.#apiKey;
464
+ const headers = { Accept: "application/json" };
465
+ if (apiKey)
466
+ headers[authHeader] = apiKey;
467
+ if (body !== undefined)
468
+ headers["Content-Type"] = "application/json";
469
+ if (extraHeaders)
470
+ Object.assign(headers, extraHeaders);
471
+ const ctrl = new AbortController();
472
+ const timeoutMs = opts.timeoutMs ?? this.#timeoutMs;
473
+ const timeout = setTimeout(() => ctrl.abort(), timeoutMs);
474
+ if (opts.signal) {
475
+ if (opts.signal.aborted)
476
+ ctrl.abort();
477
+ else
478
+ opts.signal.addEventListener("abort", () => ctrl.abort(), { once: true });
479
+ }
480
+ let res;
481
+ try {
482
+ res = await this.#fetch(url, {
483
+ method,
484
+ headers,
485
+ body: body !== undefined ? JSON.stringify(body) : undefined,
486
+ signal: ctrl.signal,
487
+ });
488
+ }
489
+ catch (err) {
490
+ throw new FairScaleError(`network error: ${err.message}`, 0, "network_error");
491
+ }
492
+ finally {
493
+ clearTimeout(timeout);
494
+ }
495
+ const text = await res.text();
496
+ let json;
497
+ try {
498
+ json = text ? JSON.parse(text) : {};
499
+ }
500
+ catch {
501
+ throw new FairScaleError(`invalid JSON from FairScale (${res.status})`, res.status, "invalid_json");
502
+ }
503
+ if (!res.ok) {
504
+ const errCode = json?.code ??
505
+ json?.error ??
506
+ `http_${res.status}`;
507
+ throw new FairScaleError(`FairScale ${method} ${url} → ${res.status}: ${errCode}`, res.status, errCode);
508
+ }
509
+ return json;
510
+ }
511
+ }
512
+ // ═══════════════════════════════════════════════════════════════════
513
+ // Human Score namespace
514
+ // ═══════════════════════════════════════════════════════════════════
515
+ /**
516
+ * @name HumanScoreNamespace
517
+ * @description Wraps `api.fairscale.xyz` (Human Score API). Accessed via
518
+ * `client.fairscale.human`.
519
+ * @category Registries
520
+ * @since v0.11.0
521
+ */
522
+ export class HumanScoreNamespace {
523
+ #baseUrl;
524
+ #apiKey;
525
+ #timeoutMs;
526
+ #fetch;
527
+ constructor(baseUrl, apiKey, timeoutMs, fetchImpl) {
528
+ this.#baseUrl = baseUrl;
529
+ this.#apiKey = apiKey;
530
+ this.#timeoutMs = timeoutMs;
531
+ this.#fetch = fetchImpl;
532
+ }
533
+ /**
534
+ * @description `GET /score` — full human wallet analysis.
535
+ */
536
+ score(wallet, opts = {}) {
537
+ return this.#get("/score", { wallet: toWallet(wallet), twitter: opts.twitter, nocache: opts.nocache }, opts);
538
+ }
539
+ /** `GET /fairScore` — blended 0–1000 integer. */
540
+ fairScoreOnly(wallet, opts = {}) {
541
+ return this.#get("/fairScore", { wallet: toWallet(wallet) }, opts);
542
+ }
543
+ /** `GET /walletScore` — on-chain only 0–1000 integer. */
544
+ walletScoreOnly(wallet, opts = {}) {
545
+ return this.#get("/walletScore", { wallet: toWallet(wallet) }, opts);
546
+ }
547
+ /** `GET /socialScore` — social only 0–1000 integer. */
548
+ socialScoreOnly(wallet, opts = {}) {
549
+ return this.#get("/socialScore", { wallet: toWallet(wallet), twitter: opts.twitter }, opts);
550
+ }
551
+ async #get(path, params, opts) {
552
+ const url = new URL(this.#baseUrl + path);
553
+ for (const [k, v] of Object.entries(params)) {
554
+ if (v === undefined || v === null)
555
+ continue;
556
+ url.searchParams.set(k, String(v));
557
+ }
558
+ const apiKey = opts.apiKey ?? this.#apiKey;
559
+ const headers = { Accept: "application/json" };
560
+ if (apiKey)
561
+ headers["fairkey"] = apiKey;
562
+ const ctrl = new AbortController();
563
+ const timeout = setTimeout(() => ctrl.abort(), opts.timeoutMs ?? this.#timeoutMs);
564
+ if (opts.signal) {
565
+ if (opts.signal.aborted)
566
+ ctrl.abort();
567
+ else
568
+ opts.signal.addEventListener("abort", () => ctrl.abort(), { once: true });
569
+ }
570
+ let res;
571
+ try {
572
+ res = await this.#fetch(url.toString(), { method: "GET", headers, signal: ctrl.signal });
573
+ }
574
+ catch (err) {
575
+ throw new FairScaleError(`network error: ${err.message}`, 0, "network_error");
576
+ }
577
+ finally {
578
+ clearTimeout(timeout);
579
+ }
580
+ const text = await res.text();
581
+ let json;
582
+ try {
583
+ json = text ? JSON.parse(text) : {};
584
+ }
585
+ catch {
586
+ throw new FairScaleError(`invalid JSON from FairScale Human API (${res.status})`, res.status, "invalid_json");
587
+ }
588
+ if (!res.ok) {
589
+ const code = json?.code ??
590
+ json?.error ??
591
+ `http_${res.status}`;
592
+ throw new FairScaleError(`FairScale Human GET ${path} → ${res.status}: ${code}`, res.status, code);
593
+ }
594
+ return json;
595
+ }
596
+ }
597
+ // ═══════════════════════════════════════════════════════════════════
598
+ // Helpers
599
+ // ═══════════════════════════════════════════════════════════════════
600
+ function toWallet(input) {
601
+ return typeof input === "string" ? input : input.toBase58();
602
+ }
603
+ function round2(n) {
604
+ return Math.round(n * 100) / 100;
605
+ }
606
+ function bucketTier(score) {
607
+ if (score >= 80)
608
+ return "elite";
609
+ if (score >= 60)
610
+ return "high";
611
+ if (score >= 40)
612
+ return "medium";
613
+ return "low";
614
+ }
615
+ function extractSapScore(profile, minFeedbacks, notes) {
616
+ if (!profile) {
617
+ notes.push("sap_unregistered");
618
+ return null;
619
+ }
620
+ const fb = profile.identity.totalFeedbacks;
621
+ if (fb < minFeedbacks) {
622
+ notes.push(`sap_below_min_feedbacks(${fb}/${minFeedbacks})`);
623
+ return null;
624
+ }
625
+ if (fb === 0) {
626
+ notes.push("sap_no_feedback_yet");
627
+ return null;
628
+ }
629
+ if (!profile.identity.isActive)
630
+ notes.push("sap_inactive");
631
+ return profile.identity.reputationScore;
632
+ }
633
+ //# sourceMappingURL=fairscale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fairscale.js","sourceRoot":"","sources":["../../../src/registries/fairscale.ts"],"names":[],"mappings":"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"}
@@ -42,4 +42,5 @@ export { X402Registry } from "./x402";
42
42
  export { SessionManager } from "./session";
43
43
  export { AgentBuilder } from "./builder";
44
44
  export { MetaplexBridge } from "./metaplex-bridge";
45
+ export { FairScaleRegistry, HumanScoreNamespace, FairScaleError, FAIRSCALE, } from "./fairscale";
45
46
  //# sourceMappingURL=index.js.map