@usesigil/kit 0.4.0 → 0.5.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/dist/dashboard/discover.d.ts.map +1 -1
- package/dist/dashboard/discover.js +10 -1
- package/dist/dashboard/discover.js.map +1 -1
- package/dist/dashboard/errors.d.ts +34 -0
- package/dist/dashboard/errors.d.ts.map +1 -1
- package/dist/dashboard/errors.js +71 -0
- package/dist/dashboard/errors.js.map +1 -1
- package/dist/dashboard/mutations.d.ts.map +1 -1
- package/dist/dashboard/mutations.js +8 -1
- package/dist/dashboard/mutations.js.map +1 -1
- package/dist/dashboard/reads.d.ts.map +1 -1
- package/dist/dashboard/reads.js +20 -27
- package/dist/dashboard/reads.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/network-errors.d.ts +107 -0
- package/dist/network-errors.d.ts.map +1 -0
- package/dist/network-errors.js +357 -0
- package/dist/network-errors.js.map +1 -0
- package/dist/priority-fees.d.ts.map +1 -1
- package/dist/priority-fees.js +13 -2
- package/dist/priority-fees.js.map +1 -1
- package/dist/seal.d.ts.map +1 -1
- package/dist/seal.js +15 -3
- package/dist/seal.js.map +1 -1
- package/dist/tee/providers/crossmint.d.ts.map +1 -1
- package/dist/tee/providers/crossmint.js +15 -8
- package/dist/tee/providers/crossmint.js.map +1 -1
- package/dist/tee/providers/privy.d.ts.map +1 -1
- package/dist/tee/providers/privy.js +13 -8
- package/dist/tee/providers/privy.js.map +1 -1
- package/dist/tee/providers/turnkey.d.ts.map +1 -1
- package/dist/tee/providers/turnkey.js +19 -3
- package/dist/tee/providers/turnkey.js.map +1 -1
- package/dist/tee/types.d.ts +26 -1
- package/dist/tee/types.d.ts.map +1 -1
- package/dist/tee/verify.d.ts +15 -4
- package/dist/tee/verify.d.ts.map +1 -1
- package/dist/tee/verify.js +147 -38
- package/dist/tee/verify.js.map +1 -1
- package/dist/tee/wallet-types.d.ts +19 -4
- package/dist/tee/wallet-types.d.ts.map +1 -1
- package/dist/tee/wallet-types.js +21 -6
- package/dist/tee/wallet-types.js.map +1 -1
- package/dist/vault-analytics.d.ts.map +1 -1
- package/dist/vault-analytics.js +10 -1
- package/dist/vault-analytics.js.map +1 -1
- package/dist/x402/facilitator-verify.d.ts.map +1 -1
- package/dist/x402/facilitator-verify.js +6 -2
- package/dist/x402/facilitator-verify.js.map +1 -1
- package/package.json +4 -2
package/dist/tee/verify.js
CHANGED
|
@@ -12,6 +12,37 @@ import { AttestationStatus, } from "./types.js";
|
|
|
12
12
|
import { verifyCrossmint } from "./providers/crossmint.js";
|
|
13
13
|
import { verifyPrivy } from "./providers/privy.js";
|
|
14
14
|
import { verifyTurnkey } from "./providers/turnkey.js";
|
|
15
|
+
import { redactCause } from "../network-errors.js";
|
|
16
|
+
/**
|
|
17
|
+
* Cache-key delimiter. `|` is chosen over `:` because base58 cannot
|
|
18
|
+
* contain `|` (or `:`), but `:` looks like part of a URL scheme and
|
|
19
|
+
* `deleteByPrefix(\`${publicKey}:\`)` would ambiguously match any
|
|
20
|
+
* future suffix scheme. `|` eliminates that fragility.
|
|
21
|
+
*/
|
|
22
|
+
const CACHE_KEY_DELIMITER = "|";
|
|
23
|
+
/**
|
|
24
|
+
* Guarded introspection — a hostile wallet can expose `publicKey` or
|
|
25
|
+
* `provider` as throwing getters and bypass the entire `TeeAttestationError`
|
|
26
|
+
* contract by making the raw getter error escape `verifyTeeAttestation`.
|
|
27
|
+
* Returns `undefined` on any throw; caller treats that as a synthetic
|
|
28
|
+
* Failed result.
|
|
29
|
+
*/
|
|
30
|
+
function readWalletIdentity(wallet) {
|
|
31
|
+
try {
|
|
32
|
+
const publicKey = wallet.publicKey;
|
|
33
|
+
if (typeof publicKey !== "string" || publicKey.length === 0) {
|
|
34
|
+
return { error: new Error("wallet.publicKey is not a non-empty string") };
|
|
35
|
+
}
|
|
36
|
+
// `detectProvider` touches `isTeeWallet` which reads `wallet.provider`
|
|
37
|
+
// — include it in the same guard so a provider-getter throw doesn't
|
|
38
|
+
// bypass the contract either.
|
|
39
|
+
const detected = detectProvider(wallet);
|
|
40
|
+
return { publicKey, detected };
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
return { error: err };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
15
46
|
/** Module-level singleton cache. */
|
|
16
47
|
const globalCache = new AttestationCache(DEFAULT_CACHE_TTL_MS);
|
|
17
48
|
/** Detect the TEE provider from a wallet. */
|
|
@@ -50,20 +81,74 @@ function attestationStatusMeetsLevel(status, level) {
|
|
|
50
81
|
* 1. Check cache (unless cacheTtlMs === 0)
|
|
51
82
|
* 2. Detect provider from wallet
|
|
52
83
|
* 3. Route to provider-specific verifier
|
|
53
|
-
* 4. Cache
|
|
54
|
-
* 5. Fire onVerified
|
|
55
|
-
* 6.
|
|
56
|
-
*
|
|
84
|
+
* 4. Cache successful results only (`Failed` and `Unavailable` never cache)
|
|
85
|
+
* 5. Fire `onVerified` on success; fire `onDegraded` on non-verified status
|
|
86
|
+
* 6. Enforce `requireAttestation` — throws `TeeAttestationError` with
|
|
87
|
+
* `.result` attached when verification didn't reach a verified status
|
|
88
|
+
* 7. Enforce `minAttestationLevel`
|
|
89
|
+
*
|
|
90
|
+
* **Safe-by-default behavior (changed in PR 1.B safety lockdown).**
|
|
91
|
+
* `requireAttestation` now defaults to `true`, so a call like
|
|
92
|
+
* `verifyTeeAttestation(wallet)` with no config throws on any degraded
|
|
93
|
+
* outcome instead of silently returning a Failed/Unavailable result.
|
|
94
|
+
* Consumers that want the old forgiving behavior must pass
|
|
95
|
+
* `{ requireAttestation: false, onDegraded: ... }` — the callback is
|
|
96
|
+
* mandatory under the forgiving path; omitting it is treated as the
|
|
97
|
+
* silent-failure vector this default was introduced to prevent and
|
|
98
|
+
* yields an immediate throw.
|
|
57
99
|
*/
|
|
58
100
|
export async function verifyTeeAttestation(wallet, config) {
|
|
59
|
-
//
|
|
60
|
-
|
|
101
|
+
// Safe-by-default: `requireAttestation` implicitly true when unset.
|
|
102
|
+
// Consumers who want the forgiving path must say so explicitly AND
|
|
103
|
+
// supply `onDegraded` — otherwise we would silently re-introduce the
|
|
104
|
+
// vulnerability this default fixes.
|
|
105
|
+
const requireAttestation = config?.requireAttestation ?? true;
|
|
106
|
+
if (!requireAttestation && typeof config?.onDegraded !== "function") {
|
|
107
|
+
throw new TeeAttestationError("verifyTeeAttestation called with `requireAttestation: false` but no `onDegraded` callback. " +
|
|
108
|
+
"Omitting the callback is a silent-degradation vector — supply `onDegraded` to observe degraded results, " +
|
|
109
|
+
"or remove `requireAttestation: false` to fail closed.");
|
|
110
|
+
}
|
|
111
|
+
// Guarded introspection — a throwing `publicKey` or `provider` getter
|
|
112
|
+
// would otherwise bypass every safety check below by escaping with a
|
|
113
|
+
// raw exception the caller didn't contract for.
|
|
114
|
+
const identity = readWalletIdentity(wallet);
|
|
115
|
+
if ("error" in identity) {
|
|
116
|
+
const syntheticResult = {
|
|
117
|
+
status: AttestationStatus.Failed,
|
|
118
|
+
provider: "crossmint", // placeholder — real provider unreadable
|
|
119
|
+
publicKey: "<unreadable>",
|
|
120
|
+
metadata: {
|
|
121
|
+
provider: "crossmint",
|
|
122
|
+
verifiedAt: Date.now(),
|
|
123
|
+
rawAttestation: {
|
|
124
|
+
introspectionFailed: true,
|
|
125
|
+
cause: redactCause(identity.error),
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
message: "Wallet rejected attestation introspection — `publicKey` or `provider` getter threw. " +
|
|
129
|
+
"This indicates a hostile or buggy wallet adapter.",
|
|
130
|
+
};
|
|
131
|
+
if (requireAttestation) {
|
|
132
|
+
throw new TeeAttestationError(syntheticResult.message, syntheticResult);
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
config?.onDegraded?.(syntheticResult);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Degraded callback errors are non-fatal.
|
|
139
|
+
}
|
|
140
|
+
return syntheticResult;
|
|
141
|
+
}
|
|
142
|
+
const publicKey = identity.publicKey;
|
|
143
|
+
const detectedProvider = identity.detected;
|
|
61
144
|
const cacheTtlMs = config?.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
|
|
62
145
|
const useCache = Number.isFinite(cacheTtlMs) && cacheTtlMs > 0;
|
|
63
146
|
// H3: Include config-sensitive params in cache key so different configs
|
|
64
|
-
// don't share results (e.g., different expectedPcr3 values).
|
|
147
|
+
// don't share results (e.g., different expectedPcr3 values). Delimiter
|
|
148
|
+
// is `|` so `deleteByPrefix(\`${publicKey}${DELIMITER}\`)` is unambiguous
|
|
149
|
+
// — base58 cannot contain `|`.
|
|
65
150
|
const cacheKey = config?.expectedPcr3
|
|
66
|
-
? `${publicKey}
|
|
151
|
+
? `${publicKey}${CACHE_KEY_DELIMITER}pcr3=${config.expectedPcr3}`
|
|
67
152
|
: publicKey;
|
|
68
153
|
// Step 1: Cache check
|
|
69
154
|
let result;
|
|
@@ -72,7 +157,7 @@ export async function verifyTeeAttestation(wallet, config) {
|
|
|
72
157
|
}
|
|
73
158
|
// Step 2-3: Verify if not cached
|
|
74
159
|
if (!result) {
|
|
75
|
-
const provider =
|
|
160
|
+
const provider = detectedProvider;
|
|
76
161
|
if (!provider) {
|
|
77
162
|
// TeeProvider is required by AttestationResult — "crossmint" used as
|
|
78
163
|
// placeholder for unrecognized wallets. Status is Unavailable so the
|
|
@@ -109,51 +194,75 @@ export async function verifyTeeAttestation(wallet, config) {
|
|
|
109
194
|
};
|
|
110
195
|
}
|
|
111
196
|
}
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
typeof result.metadata.rawAttestation === "object" &&
|
|
117
|
-
result.metadata.rawAttestation
|
|
118
|
-
.custodyCheckFailed === true;
|
|
197
|
+
// Cache only verified outcomes — `Failed` and `Unavailable` should
|
|
198
|
+
// allow the next call to retry. The previous `isCustodyFallback`
|
|
199
|
+
// guard is unnecessary now that custody-API errors surface as
|
|
200
|
+
// `Failed` (which is excluded from this allowlist).
|
|
119
201
|
if (useCache &&
|
|
120
|
-
!isCustodyFallback &&
|
|
121
202
|
(result.status === AttestationStatus.CryptographicallyVerified ||
|
|
122
203
|
result.status === AttestationStatus.ProviderVerified ||
|
|
123
204
|
result.status === AttestationStatus.ProviderTrusted)) {
|
|
124
205
|
globalCache.set(cacheKey, result, cacheTtlMs);
|
|
125
206
|
}
|
|
126
207
|
}
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
if (result.status === AttestationStatus.CryptographicallyVerified ||
|
|
208
|
+
// Classification.
|
|
209
|
+
const isVerifiedStatus = result.status === AttestationStatus.CryptographicallyVerified ||
|
|
130
210
|
result.status === AttestationStatus.ProviderVerified ||
|
|
131
|
-
result.status === AttestationStatus.ProviderTrusted
|
|
211
|
+
result.status === AttestationStatus.ProviderTrusted;
|
|
212
|
+
// Step 5a: Enforce requireAttestation. Default `true` after PR 1.B.
|
|
213
|
+
// This fires BEFORE the success callback so `onVerified` never fires
|
|
214
|
+
// on a result the dispatcher is about to reject.
|
|
215
|
+
if (requireAttestation && !isVerifiedStatus) {
|
|
132
216
|
try {
|
|
133
|
-
config?.
|
|
217
|
+
config?.onDegraded?.(result);
|
|
134
218
|
}
|
|
135
219
|
catch {
|
|
136
|
-
//
|
|
220
|
+
// Degraded callback errors are non-fatal — we still throw below.
|
|
137
221
|
}
|
|
222
|
+
throw new TeeAttestationError(`TEE attestation required but verification ${result.status}: ${result.message} ` +
|
|
223
|
+
`Set \`requireAttestation: false\` with an \`onDegraded\` callback to proceed without verification.`, result);
|
|
138
224
|
}
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
//
|
|
149
|
-
// is true but no explicit level is set (prevents ProviderTrusted from passing silently)
|
|
225
|
+
// Step 5b: Enforce minAttestationLevel. Defaults to "provider_verified"
|
|
226
|
+
// when requireAttestation is true and no explicit level is set — prevents
|
|
227
|
+
// ProviderTrusted from passing silently under the safe-by-default path.
|
|
228
|
+
//
|
|
229
|
+
// Note the literal string: `AttestationLevel` and `AttestationStatus` are
|
|
230
|
+
// distinct union/enum types whose values overlap for `provider_trusted`
|
|
231
|
+
// and `provider_verified` but diverge for the cryptographic tier
|
|
232
|
+
// (`"cryptographic"` vs `"cryptographically_verified"`). Using the
|
|
233
|
+
// literal here ensures a future maintainer raising the default bar
|
|
234
|
+
// cannot accidentally pass an enum value that fails level lookup.
|
|
150
235
|
const effectiveMinLevel = config?.minAttestationLevel ??
|
|
151
|
-
(
|
|
152
|
-
? AttestationStatus.ProviderVerified
|
|
153
|
-
: undefined);
|
|
236
|
+
(requireAttestation ? "provider_verified" : undefined);
|
|
154
237
|
if (effectiveMinLevel) {
|
|
155
238
|
if (!attestationStatusMeetsLevel(result.status, effectiveMinLevel)) {
|
|
156
|
-
|
|
239
|
+
try {
|
|
240
|
+
config?.onDegraded?.(result);
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
// Non-fatal.
|
|
244
|
+
}
|
|
245
|
+
throw new TeeAttestationError(`Attestation level ${result.status} does not meet minimum required level: ${effectiveMinLevel}`, result);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// Step 5c: Level checks passed (or were skipped). Only fire `onVerified`
|
|
249
|
+
// now — never on a result the dispatcher is about to throw over.
|
|
250
|
+
// `onDegraded` for the "returns Failed without throwing" path fires
|
|
251
|
+
// here too, since the caller opted into the forgiving mode.
|
|
252
|
+
if (isVerifiedStatus) {
|
|
253
|
+
try {
|
|
254
|
+
config?.onVerified?.(result);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
// Attestation succeeded — callback errors are non-fatal.
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
try {
|
|
262
|
+
config?.onDegraded?.(result);
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
// Non-fatal.
|
|
157
266
|
}
|
|
158
267
|
}
|
|
159
268
|
return result;
|
package/dist/tee/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/tee/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,iBAAiB,GAKlB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/tee/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,19 +43,34 @@ export interface TeeWallet extends WalletLike {
|
|
|
43
43
|
export declare const VALID_TEE_PROVIDERS: Set<string>;
|
|
44
44
|
/** Type guard to detect TEE-backed wallets. */
|
|
45
45
|
export declare function isTeeWallet(wallet: WalletLike): wallet is TeeWallet;
|
|
46
|
-
|
|
46
|
+
import type { AttestationResult } from "./types.js";
|
|
47
|
+
/**
|
|
48
|
+
* Error class for TEE attestation failures.
|
|
49
|
+
*
|
|
50
|
+
* Carries the full {@link AttestationResult} (when available) so structured
|
|
51
|
+
* observability tooling — Sentry's `captureException`, Datadog's custom
|
|
52
|
+
* error metrics — picks up `err.result.status`, `.provider`, and
|
|
53
|
+
* `.metadata.verifiedAt` automatically without callsite instrumentation.
|
|
54
|
+
* Prefer this over a separate `onDegraded` callback when throwing.
|
|
55
|
+
*/
|
|
47
56
|
export declare class TeeAttestationError extends Error {
|
|
48
|
-
|
|
57
|
+
/**
|
|
58
|
+
* The attestation result that triggered this error, when available.
|
|
59
|
+
* `undefined` for subclasses thrown before a result is constructed
|
|
60
|
+
* (certificate-chain parse failure, PCR mismatch on an incomplete result).
|
|
61
|
+
*/
|
|
62
|
+
readonly result?: AttestationResult;
|
|
63
|
+
constructor(message: string, result?: AttestationResult);
|
|
49
64
|
}
|
|
50
65
|
/** Error class for certificate chain validation failures. */
|
|
51
66
|
export declare class AttestationCertChainError extends TeeAttestationError {
|
|
52
|
-
constructor(message: string);
|
|
67
|
+
constructor(message: string, result?: AttestationResult);
|
|
53
68
|
}
|
|
54
69
|
/** Error class for PCR value mismatch. */
|
|
55
70
|
export declare class AttestationPcrMismatchError extends TeeAttestationError {
|
|
56
71
|
readonly pcrIndex: number;
|
|
57
72
|
readonly expected: string;
|
|
58
73
|
readonly actual: string;
|
|
59
|
-
constructor(pcrIndex: number, expected: string, actual: string);
|
|
74
|
+
constructor(pcrIndex: number, expected: string, actual: string, result?: AttestationResult);
|
|
60
75
|
}
|
|
61
76
|
//# sourceMappingURL=wallet-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-types.d.ts","sourceRoot":"","sources":["../../src/tee/wallet-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,eAAe,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,qBAAqB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C;;;;OAIG;IACH,cAAc,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,kCAAkC;AAClC,eAAO,MAAM,mBAAmB,aAA6C,CAAC;AAE9E,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI,SAAS,CAQnE;
|
|
1
|
+
{"version":3,"file":"wallet-types.d.ts","sourceRoot":"","sources":["../../src/tee/wallet-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,6EAA6E;IAC7E,eAAe,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,qBAAqB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C;;;;OAIG;IACH,cAAc,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,kCAAkC;AAClC,eAAO,MAAM,mBAAmB,aAA6C,CAAC;AAE9E,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI,SAAS,CAQnE;AAOD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C;;;;OAIG;IACH,SAAgB,MAAM,CAAC,EAAE,iBAAiB,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB;CAKxD;AAED,6DAA6D;AAC7D,qBAAa,yBAA0B,SAAQ,mBAAmB;gBACpD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB;CAIxD;AAED,0CAA0C;AAC1C,qBAAa,2BAA4B,SAAQ,mBAAmB;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,iBAAiB;CAW7B"}
|
package/dist/tee/wallet-types.js
CHANGED
|
@@ -12,17 +12,32 @@ export function isTeeWallet(wallet) {
|
|
|
12
12
|
typeof wallet.provider === "string" &&
|
|
13
13
|
VALID_TEE_PROVIDERS.has(wallet.provider));
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Error class for TEE attestation failures.
|
|
17
|
+
*
|
|
18
|
+
* Carries the full {@link AttestationResult} (when available) so structured
|
|
19
|
+
* observability tooling — Sentry's `captureException`, Datadog's custom
|
|
20
|
+
* error metrics — picks up `err.result.status`, `.provider`, and
|
|
21
|
+
* `.metadata.verifiedAt` automatically without callsite instrumentation.
|
|
22
|
+
* Prefer this over a separate `onDegraded` callback when throwing.
|
|
23
|
+
*/
|
|
16
24
|
export class TeeAttestationError extends Error {
|
|
17
|
-
|
|
25
|
+
/**
|
|
26
|
+
* The attestation result that triggered this error, when available.
|
|
27
|
+
* `undefined` for subclasses thrown before a result is constructed
|
|
28
|
+
* (certificate-chain parse failure, PCR mismatch on an incomplete result).
|
|
29
|
+
*/
|
|
30
|
+
result;
|
|
31
|
+
constructor(message, result) {
|
|
18
32
|
super(message);
|
|
19
33
|
this.name = "TeeAttestationError";
|
|
34
|
+
this.result = result;
|
|
20
35
|
}
|
|
21
36
|
}
|
|
22
37
|
/** Error class for certificate chain validation failures. */
|
|
23
38
|
export class AttestationCertChainError extends TeeAttestationError {
|
|
24
|
-
constructor(message) {
|
|
25
|
-
super(message);
|
|
39
|
+
constructor(message, result) {
|
|
40
|
+
super(message, result);
|
|
26
41
|
this.name = "AttestationCertChainError";
|
|
27
42
|
}
|
|
28
43
|
}
|
|
@@ -31,8 +46,8 @@ export class AttestationPcrMismatchError extends TeeAttestationError {
|
|
|
31
46
|
pcrIndex;
|
|
32
47
|
expected;
|
|
33
48
|
actual;
|
|
34
|
-
constructor(pcrIndex, expected, actual) {
|
|
35
|
-
super(`PCR${pcrIndex} mismatch: expected ${expected}, got ${actual}
|
|
49
|
+
constructor(pcrIndex, expected, actual, result) {
|
|
50
|
+
super(`PCR${pcrIndex} mismatch: expected ${expected}, got ${actual}`, result);
|
|
36
51
|
this.name = "AttestationPcrMismatchError";
|
|
37
52
|
this.pcrIndex = pcrIndex;
|
|
38
53
|
this.expected = expected;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-types.js","sourceRoot":"","sources":["../../src/tee/wallet-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwCH,kCAAkC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9E,+CAA+C;AAC/C,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC5C,OAAO,CACL,UAAU,IAAI,MAAM;QACpB,OAAQ,MAAkC,CAAC,QAAQ,KAAK,QAAQ;QAChE,mBAAmB,CAAC,GAAG,CACpB,MAAkC,CAAC,QAAkB,CACvD,CACF,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet-types.js","sourceRoot":"","sources":["../../src/tee/wallet-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwCH,kCAAkC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9E,+CAA+C;AAC/C,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC5C,OAAO,CACL,UAAU,IAAI,MAAM;QACpB,OAAQ,MAAkC,CAAC,QAAQ,KAAK,QAAQ;QAChE,mBAAmB,CAAC,GAAG,CACpB,MAAkC,CAAC,QAAkB,CACvD,CACF,CAAC;AACJ,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;;;;OAIG;IACa,MAAM,CAAqB;IAE3C,YAAY,OAAe,EAAE,MAA0B;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,6DAA6D;AAC7D,MAAM,OAAO,yBAA0B,SAAQ,mBAAmB;IAChE,YAAY,OAAe,EAAE,MAA0B;QACrD,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,2BAA4B,SAAQ,mBAAmB;IACzD,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,MAAM,CAAS;IAExB,YACE,QAAgB,EAChB,QAAgB,EAChB,MAAc,EACd,MAA0B;QAE1B,KAAK,CACH,MAAM,QAAQ,uBAAuB,QAAQ,SAAS,MAAM,EAAE,EAC9D,MAAM,CACP,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-analytics.d.ts","sourceRoot":"","sources":["../src/vault-analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"vault-analytics.d.ts","sourceRoot":"","sources":["../src/vault-analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,OAAO,CAAC;IAChC,iEAAiE;IACjE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,QAAQ,CAAC;IACd,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,0BAA0B,CAAC;IAClC,KAAK,EAAE,UAAU,CAAC;CACnB;AAID;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,GAAG,0BAA0B,EACtD,OAAO,EAAE,MAAM,GACd,WAAW,CA2Hb;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAwB,GAChC,OAAO,CAAC,YAAY,CAAC,CAuDvB"}
|
package/dist/vault-analytics.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { VaultStatus } from "./generated/types/vaultStatus.js";
|
|
11
11
|
import { resolveVaultStateForOwner, getPendingPolicyForVault, } from "./state-resolver.js";
|
|
12
|
+
import { isAccountNotFoundError } from "./dashboard/errors.js";
|
|
12
13
|
import { getVaultPnL, getVaultTokenBalances, } from "./balance-tracker.js";
|
|
13
14
|
import { getSpendingVelocity } from "./spending-analytics.js";
|
|
14
15
|
import { FULL_CAPABILITY, PROTOCOL_MODE_ALLOWLIST, EPOCH_DURATION, NUM_EPOCHS, } from "./types.js";
|
|
@@ -136,7 +137,15 @@ export async function getVaultSummary(rpc, vault, network = "mainnet-beta") {
|
|
|
136
137
|
resolveVaultStateForOwner(rpc, vault, undefined, network),
|
|
137
138
|
getVaultPnL(rpc, vault, network),
|
|
138
139
|
getVaultTokenBalances(rpc, vault, network),
|
|
139
|
-
getPendingPolicyForVault(rpc, vault).catch(() =>
|
|
140
|
+
getPendingPolicyForVault(rpc, vault).catch((err) => {
|
|
141
|
+
// Account-not-found is expected (no pending update) — return null.
|
|
142
|
+
// Re-throw everything else (RPC transport, decode failures) so the
|
|
143
|
+
// caller surfaces real errors rather than silently seeing
|
|
144
|
+
// `pendingPolicy: null` on an unrelated outage.
|
|
145
|
+
if (isAccountNotFoundError(err))
|
|
146
|
+
return null;
|
|
147
|
+
throw err;
|
|
148
|
+
}),
|
|
140
149
|
]);
|
|
141
150
|
const nowUnix = state.resolvedAtTimestamp;
|
|
142
151
|
const health = getVaultHealth(state, nowUnix);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-analytics.js","sourceRoot":"","sources":["../src/vault-analytics.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vault-analytics.js","sourceRoot":"","sources":["../src/vault-analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facilitator-verify.d.ts","sourceRoot":"","sources":["../../src/x402/facilitator-verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"facilitator-verify.d.ts","sourceRoot":"","sources":["../../src/x402/facilitator-verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,MAAM,EACxB,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,CAAC,CA8DlC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Validates settlement responses from x402 facilitators.
|
|
5
5
|
* Non-fatal — logs warnings on suspicious responses.
|
|
6
6
|
*/
|
|
7
|
+
import { redactCause } from "../network-errors.js";
|
|
7
8
|
/** Base58 character set for validation */
|
|
8
9
|
const BASE58_REGEX = /^[1-9A-HJ-NP-Za-km-z]{64,88}$/;
|
|
9
10
|
/**
|
|
@@ -47,8 +48,11 @@ export async function validateSettlement(settlement, expectedNetwork, rpc, timeo
|
|
|
47
48
|
warnings.push(`Settlement TX ${settlement.transaction.slice(0, 12)}... not confirmed on-chain within ${timeoutMs ?? 10_000}ms`);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
|
-
catch {
|
|
51
|
-
|
|
51
|
+
catch (err) {
|
|
52
|
+
// Attach a redacted cause so consumers can distinguish RPC outage
|
|
53
|
+
// from genuine settlement-not-found without parsing the raw error.
|
|
54
|
+
const cause = redactCause(err);
|
|
55
|
+
warnings.push(`Failed to verify settlement TX on-chain: ${settlement.transaction.slice(0, 12)}... (${cause.message ?? cause.name ?? cause.code ?? "unknown"})`);
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
return { valid: true, warnings };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facilitator-verify.js","sourceRoot":"","sources":["../../src/x402/facilitator-verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"facilitator-verify.js","sourceRoot":"","sources":["../../src/x402/facilitator-verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,YAAY,GAAG,+BAA+B,CAAC;AAOrD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAA0B,EAC1B,eAAwB,EACxB,GAAuB,EACvB,SAAkB;IAElB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,qDAAqD;IACrD,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CACX,6DAA6D,CAC9D,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,wDAAwD;IACxD,IAAI,UAAU,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACzE,QAAQ,CAAC,IAAI,CACX,yDAAyD,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CACnG,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,4BAA4B;IAC5B,IACE,eAAe;QACf,UAAU,CAAC,OAAO;QAClB,UAAU,CAAC,OAAO,KAAK,eAAe,EACtC,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,uBAAuB,UAAU,CAAC,OAAO,8BAA8B,eAAe,GAAG,CAC1F,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CACX,sBAAsB,UAAU,CAAC,WAAW,IAAI,gBAAgB,EAAE,CACnE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,sEAAsE;IACtE,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,mBAAmB,CACzC,GAAG,EACH,UAAU,CAAC,WAAW,EACtB,SAAS,IAAI,MAAM,CACpB,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CACX,iBAAiB,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qCAAqC,SAAS,IAAI,MAAM,IAAI,CACjH,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,kEAAkE;YAClE,mEAAmE;YACnE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/B,QAAQ,CAAC,IAAI,CACX,4CAA4C,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,GAAG,CACjJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAsB,EACtB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,GAAG;aACrB,oBAAoB,CAAC;YACpB,SAEO;SACR,CAAC;aACD,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GACZ,MAGD,CAAC,KAAK,CAAC;QACR,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;YAC7C,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usesigil/kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Kaleb Rupe (https://x.com/MightieMags)",
|
|
6
6
|
"homepage": "https://github.com/Sigil-Trade/sigil#readme",
|
|
@@ -47,7 +47,8 @@
|
|
|
47
47
|
"@solana-program/compute-budget": "^0.15.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@solana/kit": "^6.2.0"
|
|
50
|
+
"@solana/kit": "^6.2.0",
|
|
51
|
+
"@solana/errors": "^6.2.0"
|
|
51
52
|
},
|
|
52
53
|
"optionalDependencies": {
|
|
53
54
|
"cbor-x": "^1.6.0"
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"devDependencies": {
|
|
56
57
|
"@codama/nodes-from-anchor": "1.3.9",
|
|
57
58
|
"@codama/renderers-js": "2.0.3",
|
|
59
|
+
"@solana/errors": "^6.2.0",
|
|
58
60
|
"@types/chai": "^5.2.3",
|
|
59
61
|
"@types/mocha": "^10.0.6",
|
|
60
62
|
"chai": "^6.2.2",
|