tenzro-sdk 0.2.0 → 0.3.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 +1 -1
- package/dist/adaptive-burn.js +4 -4
- package/dist/adaptive-burn.js.map +1 -1
- package/dist/agent.d.ts +119 -11
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +162 -13
- package/dist/agent.js.map +1 -1
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/auth.d.ts +37 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +11 -0
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +81 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +99 -0
- package/dist/client.js.map +1 -1
- package/dist/eip7702.d.ts +110 -0
- package/dist/eip7702.d.ts.map +1 -0
- package/dist/eip7702.js +73 -0
- package/dist/eip7702.js.map +1 -0
- package/dist/erc7683.d.ts +79 -0
- package/dist/erc7683.d.ts.map +1 -0
- package/dist/erc7683.js +82 -0
- package/dist/erc7683.js.map +1 -0
- package/dist/events.d.ts +45 -15
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +38 -8
- package/dist/events.js.map +1 -1
- package/dist/identity.d.ts +1 -1
- package/dist/identity.js +1 -1
- package/dist/index.d.ts +25 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/iroh.d.ts +104 -0
- package/dist/iroh.d.ts.map +1 -0
- package/dist/iroh.js +102 -0
- package/dist/iroh.js.map +1 -0
- package/dist/marketplace.d.ts +2 -2
- package/dist/marketplace.js +2 -2
- package/dist/memory.d.ts +78 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +60 -0
- package/dist/memory.js.map +1 -0
- package/dist/multimodal.d.ts +294 -0
- package/dist/multimodal.d.ts.map +1 -0
- package/dist/multimodal.js +160 -0
- package/dist/multimodal.js.map +1 -0
- package/dist/passkey.d.ts +193 -0
- package/dist/passkey.d.ts.map +1 -0
- package/dist/passkey.js +481 -0
- package/dist/passkey.js.map +1 -0
- package/dist/provider.d.ts +5 -4
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +8 -5
- package/dist/provider.js.map +1 -1
- package/dist/seed-agent.js +7 -7
- package/dist/seed-agent.js.map +1 -1
- package/dist/settlement.d.ts +23 -6
- package/dist/settlement.d.ts.map +1 -1
- package/dist/settlement.js +30 -7
- package/dist/settlement.js.map +1 -1
- package/dist/signer.d.ts +181 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +69 -0
- package/dist/signer.js.map +1 -0
- package/dist/sla.d.ts +95 -0
- package/dist/sla.d.ts.map +1 -0
- package/dist/sla.js +70 -0
- package/dist/sla.js.map +1 -0
- package/dist/snapshot.d.ts +122 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +80 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/staking.d.ts +5 -5
- package/dist/staking.d.ts.map +1 -1
- package/dist/staking.js +8 -6
- package/dist/staking.js.map +1 -1
- package/dist/task.d.ts +56 -22
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +65 -31
- package/dist/task.js.map +1 -1
- package/dist/token.d.ts +41 -11
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js.map +1 -1
- package/dist/training.d.ts +108 -0
- package/dist/training.d.ts.map +1 -0
- package/dist/training.js +53 -0
- package/dist/training.js.map +1 -0
- package/dist/types.d.ts +72 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validator.d.ts +76 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +47 -0
- package/dist/validator.js.map +1 -0
- package/package.json +2 -1
package/dist/passkey.js
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Passkey wallet — high-level "three-line" composition.
|
|
4
|
+
*
|
|
5
|
+
* TypeScript mirror of `tenzro_sdk::passkey` (Rust). See
|
|
6
|
+
* `docs/SPECIFICATION.md` §15.10.1.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { createPasskeyWallet, signWithPasskey } from "@tenzro/sdk";
|
|
10
|
+
*
|
|
11
|
+
* const wallet = await createPasskeyWallet({
|
|
12
|
+
* rpId: "keys.tenzro.network",
|
|
13
|
+
* });
|
|
14
|
+
* const sig = await signWithPasskey(wallet, userOp);
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* # Where the actual ceremony runs
|
|
18
|
+
*
|
|
19
|
+
* - **Browser:** `navigator.credentials.create/get`. The SDK detects
|
|
20
|
+
* the browser environment automatically.
|
|
21
|
+
* - **Tauri desktop:** Tauri commands `device_create_passkey` /
|
|
22
|
+
* `device_sign_passkey` (implemented in
|
|
23
|
+
* `apps/tenzro-desktop/src-tauri/src/device_key.rs`). Pass a
|
|
24
|
+
* {@link PlatformAuthenticator} adapter that posts to those
|
|
25
|
+
* commands via `@tauri-apps/api/core`.
|
|
26
|
+
* - **Headless:** {@link SoftwareP256Authenticator} via Web Crypto
|
|
27
|
+
* `subtle.generateKey` / `subtle.sign`. Returns `false` from
|
|
28
|
+
* `isPlatformAuthenticatorAvailable` so production configs reject
|
|
29
|
+
* it (the safe default).
|
|
30
|
+
*
|
|
31
|
+
* # Cross-device QR (FIDO hybrid / caBLE)
|
|
32
|
+
*
|
|
33
|
+
* When `isPlatformAuthenticatorAvailable()` returns false and the
|
|
34
|
+
* caller used a production config, the SDK throws and recommends
|
|
35
|
+
* {@link startCrossDeviceLink} which returns a QR payload + a
|
|
36
|
+
* promise that resolves once the remote authenticator completes.
|
|
37
|
+
* The actual caBLE wire is implemented by the host adapter; the SDK
|
|
38
|
+
* ships only the surface.
|
|
39
|
+
*/
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.SoftwareP256Authenticator = exports.BrowserWebAuthnAuthenticator = exports.WebAuthnValidator = exports.WebAuthnSigner = void 0;
|
|
42
|
+
exports.productionConfig = productionConfig;
|
|
43
|
+
exports.developmentConfig = developmentConfig;
|
|
44
|
+
exports.createPasskeyWallet = createPasskeyWallet;
|
|
45
|
+
exports.signWithPasskey = signWithPasskey;
|
|
46
|
+
exports.defaultAuthenticator = defaultAuthenticator;
|
|
47
|
+
const signer_1 = require("./signer");
|
|
48
|
+
/** Production preset: strict UV, platform attachment required. */
|
|
49
|
+
function productionConfig(rpId) {
|
|
50
|
+
return {
|
|
51
|
+
rpId,
|
|
52
|
+
rpName: "Tenzro Network",
|
|
53
|
+
requireUserVerification: true,
|
|
54
|
+
requirePlatformAuthenticator: true,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Development preset: strict UV, allows cross-platform (YubiKey on Linux). */
|
|
58
|
+
function developmentConfig(rpId) {
|
|
59
|
+
return {
|
|
60
|
+
rpId,
|
|
61
|
+
rpName: "Tenzro Network (dev)",
|
|
62
|
+
requireUserVerification: true,
|
|
63
|
+
requirePlatformAuthenticator: false,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function resolveConfig(cfg) {
|
|
67
|
+
const base = cfg.requirePlatformAuthenticator === false
|
|
68
|
+
? developmentConfig(cfg.rpId)
|
|
69
|
+
: productionConfig(cfg.rpId);
|
|
70
|
+
return {
|
|
71
|
+
rpId: cfg.rpId,
|
|
72
|
+
rpName: cfg.rpName ?? base.rpName,
|
|
73
|
+
requireUserVerification: cfg.requireUserVerification ?? base.requireUserVerification,
|
|
74
|
+
requirePlatformAuthenticator: cfg.requirePlatformAuthenticator ?? base.requirePlatformAuthenticator,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** {@link Signer} impl that delegates to a {@link PlatformAuthenticator}. */
|
|
78
|
+
class WebAuthnSigner {
|
|
79
|
+
authenticator;
|
|
80
|
+
credentialBytes;
|
|
81
|
+
config;
|
|
82
|
+
constructor(authenticator, credentialBytes, config) {
|
|
83
|
+
this.authenticator = authenticator;
|
|
84
|
+
this.credentialBytes = credentialBytes;
|
|
85
|
+
this.config = config;
|
|
86
|
+
}
|
|
87
|
+
describe() {
|
|
88
|
+
return { kind: "webauthn", credentialId: this.credentialBytes.credentialId };
|
|
89
|
+
}
|
|
90
|
+
credential() {
|
|
91
|
+
return this.credentialBytes;
|
|
92
|
+
}
|
|
93
|
+
async sign(hash) {
|
|
94
|
+
if (hash.length !== 32) {
|
|
95
|
+
throw new signer_1.SignerError("authentication-failed", `expected 32-byte hash, got ${hash.length}`);
|
|
96
|
+
}
|
|
97
|
+
const assertion = await this.authenticator.signAssertion(this.config, this.credentialBytes.credentialId, hash);
|
|
98
|
+
// Pack authenticatorData + clientDataJSON into `aux` with 4-byte
|
|
99
|
+
// LE length prefixes — matches the Rust SDK and the on-chain
|
|
100
|
+
// WebAuthnValidator's `validatorData` decoder.
|
|
101
|
+
const aux = packAux(assertion.authenticatorData, assertion.clientDataJson);
|
|
102
|
+
return { bytes: assertion.signature, aux };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.WebAuthnSigner = WebAuthnSigner;
|
|
106
|
+
/** {@link Validator} impl that targets the on-chain `WebAuthnValidator` module. */
|
|
107
|
+
class WebAuthnValidator {
|
|
108
|
+
module;
|
|
109
|
+
signer;
|
|
110
|
+
constructor(module, signer) {
|
|
111
|
+
this.module = module;
|
|
112
|
+
this.signer = signer;
|
|
113
|
+
}
|
|
114
|
+
moduleAddress() {
|
|
115
|
+
return this.module;
|
|
116
|
+
}
|
|
117
|
+
moduleType() {
|
|
118
|
+
return signer_1.Erc7579ModuleType.Validator;
|
|
119
|
+
}
|
|
120
|
+
async buildValidatorData(userOp) {
|
|
121
|
+
let sig;
|
|
122
|
+
try {
|
|
123
|
+
sig = await this.signer.sign(userOp.opHash);
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
127
|
+
throw new signer_1.ValidatorError("assembly-failed", msg);
|
|
128
|
+
}
|
|
129
|
+
// Wire format consumed by `aa_webauthn_validator::WebAuthnValidator`:
|
|
130
|
+
// sig.bytes (raw 64-byte P-256 sig) || sig.aux (length-prefixed
|
|
131
|
+
// authenticatorData + clientDataJSON).
|
|
132
|
+
const out = new Uint8Array(sig.bytes.length + sig.aux.length);
|
|
133
|
+
out.set(sig.bytes, 0);
|
|
134
|
+
out.set(sig.aux, sig.bytes.length);
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.WebAuthnValidator = WebAuthnValidator;
|
|
139
|
+
/**
|
|
140
|
+
* One-shot create. Per Spec §15.10.1 step 1, when no platform
|
|
141
|
+
* authenticator is available the SDK MUST switch to the cross-device
|
|
142
|
+
* flow rather than silently using a software key — this is enforced
|
|
143
|
+
* here.
|
|
144
|
+
*/
|
|
145
|
+
async function createPasskeyWallet(config, authenticator) {
|
|
146
|
+
const resolved = resolveConfig(config);
|
|
147
|
+
const auth = authenticator ?? defaultAuthenticator();
|
|
148
|
+
if (resolved.requirePlatformAuthenticator &&
|
|
149
|
+
!(await auth.isPlatformAuthenticatorAvailable())) {
|
|
150
|
+
throw new signer_1.SignerError("backend-unavailable", "no platform authenticator available — call startCrossDeviceLink to render a QR for the FIDO hybrid (caBLE) flow");
|
|
151
|
+
}
|
|
152
|
+
// 32 random bytes per WebAuthn spec.
|
|
153
|
+
const challenge = randomChallenge();
|
|
154
|
+
const registration = await auth.createCredential(resolved, challenge);
|
|
155
|
+
const signer = new WebAuthnSigner(auth, registration.credential, resolved);
|
|
156
|
+
let validatorModule = null;
|
|
157
|
+
return {
|
|
158
|
+
credential: registration.credential,
|
|
159
|
+
config: resolved,
|
|
160
|
+
signer,
|
|
161
|
+
bindValidatorModule(address) {
|
|
162
|
+
validatorModule = address;
|
|
163
|
+
},
|
|
164
|
+
validatorModule() {
|
|
165
|
+
return validatorModule;
|
|
166
|
+
},
|
|
167
|
+
async startCrossDeviceLink() {
|
|
168
|
+
return auth.startCrossDeviceLink(resolved);
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Sign a user op. Returns the bytes ready to drop into
|
|
174
|
+
* `UserOperation.signature`. Fails until `bindValidatorModule` has
|
|
175
|
+
* been called with the on-chain module address.
|
|
176
|
+
*/
|
|
177
|
+
async function signWithPasskey(wallet, userOp) {
|
|
178
|
+
const module = wallet.validatorModule();
|
|
179
|
+
if (!module) {
|
|
180
|
+
throw new signer_1.SignerError("backend-unavailable", "validator module not yet bound — call bindValidatorModule after the bootstrap op lands");
|
|
181
|
+
}
|
|
182
|
+
const validator = new WebAuthnValidator(module, wallet.signer);
|
|
183
|
+
return validator.buildValidatorData(userOp);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Pick the right {@link PlatformAuthenticator} for the current host.
|
|
187
|
+
* Browsers use `navigator.credentials`; Tauri / Node fall back to the
|
|
188
|
+
* software reference. Custom hosts pass an explicit authenticator to
|
|
189
|
+
* {@link createPasskeyWallet}.
|
|
190
|
+
*/
|
|
191
|
+
function defaultAuthenticator() {
|
|
192
|
+
if (typeof navigator !== "undefined" &&
|
|
193
|
+
typeof navigator.credentials !== "undefined") {
|
|
194
|
+
return new BrowserWebAuthnAuthenticator();
|
|
195
|
+
}
|
|
196
|
+
return new SoftwareP256Authenticator();
|
|
197
|
+
}
|
|
198
|
+
// --- Browser WebAuthn implementation ---------------------------------
|
|
199
|
+
/**
|
|
200
|
+
* Browser-native authenticator using `navigator.credentials`. This is
|
|
201
|
+
* the production path on the web.
|
|
202
|
+
*/
|
|
203
|
+
class BrowserWebAuthnAuthenticator {
|
|
204
|
+
async isPlatformAuthenticatorAvailable() {
|
|
205
|
+
if (typeof PublicKeyCredential === "undefined")
|
|
206
|
+
return false;
|
|
207
|
+
const fn = PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable;
|
|
208
|
+
if (!fn)
|
|
209
|
+
return false;
|
|
210
|
+
try {
|
|
211
|
+
return await fn.call(PublicKeyCredential);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
async createCredential(config, challenge) {
|
|
218
|
+
const userId = new Uint8Array(16);
|
|
219
|
+
crypto.getRandomValues(userId);
|
|
220
|
+
const cred = (await navigator.credentials.create({
|
|
221
|
+
publicKey: {
|
|
222
|
+
challenge: bufferOf(challenge),
|
|
223
|
+
rp: { id: config.rpId, name: config.rpName },
|
|
224
|
+
user: {
|
|
225
|
+
id: bufferOf(userId),
|
|
226
|
+
name: "tenzro-user",
|
|
227
|
+
displayName: "Tenzro User",
|
|
228
|
+
},
|
|
229
|
+
pubKeyCredParams: [{ type: "public-key", alg: -7 }], // ES256 / P-256
|
|
230
|
+
authenticatorSelection: {
|
|
231
|
+
authenticatorAttachment: config.requirePlatformAuthenticator
|
|
232
|
+
? "platform"
|
|
233
|
+
: undefined,
|
|
234
|
+
userVerification: config.requireUserVerification
|
|
235
|
+
? "required"
|
|
236
|
+
: "preferred",
|
|
237
|
+
residentKey: "preferred",
|
|
238
|
+
},
|
|
239
|
+
attestation: "none",
|
|
240
|
+
},
|
|
241
|
+
}));
|
|
242
|
+
if (!cred) {
|
|
243
|
+
throw new signer_1.SignerError("user-cancelled", "credential creation returned null");
|
|
244
|
+
}
|
|
245
|
+
const response = cred.response;
|
|
246
|
+
const credentialId = new Uint8Array(cred.rawId);
|
|
247
|
+
const publicKey = extractCosePublicKey(new Uint8Array(response.attestationObject));
|
|
248
|
+
return {
|
|
249
|
+
credential: { credentialId, publicKey },
|
|
250
|
+
attestationObject: new Uint8Array(response.attestationObject),
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
async signAssertion(config, credentialId, challenge) {
|
|
254
|
+
const cred = (await navigator.credentials.get({
|
|
255
|
+
publicKey: {
|
|
256
|
+
challenge: bufferOf(challenge),
|
|
257
|
+
rpId: config.rpId,
|
|
258
|
+
allowCredentials: [
|
|
259
|
+
{
|
|
260
|
+
type: "public-key",
|
|
261
|
+
id: bufferOf(credentialId),
|
|
262
|
+
transports: ["internal", "hybrid", "usb", "nfc", "ble"],
|
|
263
|
+
},
|
|
264
|
+
],
|
|
265
|
+
userVerification: config.requireUserVerification
|
|
266
|
+
? "required"
|
|
267
|
+
: "preferred",
|
|
268
|
+
},
|
|
269
|
+
}));
|
|
270
|
+
if (!cred) {
|
|
271
|
+
throw new signer_1.SignerError("user-cancelled", "assertion returned null");
|
|
272
|
+
}
|
|
273
|
+
const response = cred.response;
|
|
274
|
+
return {
|
|
275
|
+
signature: derToRawP256(new Uint8Array(response.signature)),
|
|
276
|
+
authenticatorData: new Uint8Array(response.authenticatorData),
|
|
277
|
+
clientDataJson: new Uint8Array(response.clientDataJSON),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
async startCrossDeviceLink(_config) {
|
|
281
|
+
// The browser doesn't expose caBLE QR generation directly — it
|
|
282
|
+
// ships inside `navigator.credentials.get` when the platform
|
|
283
|
+
// detects no local authenticator. Custom hosts (Tauri) implement
|
|
284
|
+
// this directly. Surface a clear error here.
|
|
285
|
+
throw new signer_1.SignerError("backend-unavailable", "browser does not expose caBLE QR; the OS handles cross-device transparently inside navigator.credentials.get");
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
exports.BrowserWebAuthnAuthenticator = BrowserWebAuthnAuthenticator;
|
|
289
|
+
// --- Software reference implementation -------------------------------
|
|
290
|
+
/**
|
|
291
|
+
* Software-only authenticator backed by Web Crypto's `subtle.sign`.
|
|
292
|
+
*
|
|
293
|
+
* **Not for production wallets.** The whole point of a passkey is that
|
|
294
|
+
* the secret never leaves dedicated hardware; a software keypair gives
|
|
295
|
+
* you the API shape but none of the security. The SDK exposes this so
|
|
296
|
+
* Node tests, CI, and reference docs can exercise the full surface
|
|
297
|
+
* without touching a real authenticator.
|
|
298
|
+
*
|
|
299
|
+
* `isPlatformAuthenticatorAvailable()` returns `false` so production
|
|
300
|
+
* configs refuse to use it (the safe default — opting into software
|
|
301
|
+
* keys requires {@link developmentConfig}).
|
|
302
|
+
*/
|
|
303
|
+
class SoftwareP256Authenticator {
|
|
304
|
+
readyPromise;
|
|
305
|
+
keyPair;
|
|
306
|
+
credentialId;
|
|
307
|
+
publicKey;
|
|
308
|
+
constructor() {
|
|
309
|
+
this.readyPromise = this.init();
|
|
310
|
+
}
|
|
311
|
+
async init() {
|
|
312
|
+
this.keyPair = (await crypto.subtle.generateKey({ name: "ECDSA", namedCurve: "P-256" }, true, ["sign", "verify"]));
|
|
313
|
+
const raw = new Uint8Array(await crypto.subtle.exportKey("raw", this.keyPair.publicKey));
|
|
314
|
+
// Web Crypto returns SEC1 uncompressed `0x04 || x(32) || y(32)` —
|
|
315
|
+
// strip the prefix to match the on-chain WebAuthnValidator's
|
|
316
|
+
// 64-byte `x || y` form.
|
|
317
|
+
if (raw.length !== 65 || raw[0] !== 0x04) {
|
|
318
|
+
throw new signer_1.SignerError("backend-unavailable", `unexpected raw EC public-key encoding (len=${raw.length}, prefix=${raw[0]})`);
|
|
319
|
+
}
|
|
320
|
+
this.publicKey = raw.slice(1);
|
|
321
|
+
this.credentialId = new Uint8Array(16);
|
|
322
|
+
crypto.getRandomValues(this.credentialId);
|
|
323
|
+
}
|
|
324
|
+
async isPlatformAuthenticatorAvailable() {
|
|
325
|
+
// Software-backed; not a platform authenticator. Production
|
|
326
|
+
// configs will refuse this and force the cross-device flow.
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
async createCredential(_config, _challenge) {
|
|
330
|
+
await this.readyPromise;
|
|
331
|
+
return {
|
|
332
|
+
credential: {
|
|
333
|
+
credentialId: this.credentialId,
|
|
334
|
+
publicKey: this.publicKey,
|
|
335
|
+
},
|
|
336
|
+
attestationObject: new Uint8Array(),
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
async signAssertion(_config, credentialId, challenge) {
|
|
340
|
+
await this.readyPromise;
|
|
341
|
+
if (!eqBytes(credentialId, this.credentialId)) {
|
|
342
|
+
throw new signer_1.SignerError("authentication-failed", "credential ID mismatch");
|
|
343
|
+
}
|
|
344
|
+
// WebAuthn signs over `authenticatorData || SHA-256(clientDataJSON)`.
|
|
345
|
+
const authenticatorData = new Uint8Array(37);
|
|
346
|
+
// bytes 0..32 = rpIdHash placeholder (zeros)
|
|
347
|
+
authenticatorData[32] = 0b0000_0101; // UP=1, UV=1
|
|
348
|
+
// bytes 33..37 = signCount = 0
|
|
349
|
+
const clientDataJsonText = `{"type":"webauthn.get","challenge":"${b64UrlNoPad(challenge)}","origin":"https://localhost"}`;
|
|
350
|
+
const clientDataJson = new TextEncoder().encode(clientDataJsonText);
|
|
351
|
+
const clientDataHash = new Uint8Array(await crypto.subtle.digest("SHA-256", clientDataJson));
|
|
352
|
+
const signed = new Uint8Array(authenticatorData.length + clientDataHash.length);
|
|
353
|
+
signed.set(authenticatorData, 0);
|
|
354
|
+
signed.set(clientDataHash, authenticatorData.length);
|
|
355
|
+
// Web Crypto returns the canonical 64-byte `r || s` form for
|
|
356
|
+
// ECDSA over P-256 (per WebCrypto §23.4.5), which is exactly what
|
|
357
|
+
// the on-chain validator wants.
|
|
358
|
+
const sig = new Uint8Array(await crypto.subtle.sign({ name: "ECDSA", hash: "SHA-256" }, this.keyPair.privateKey, signed));
|
|
359
|
+
return { signature: sig, authenticatorData, clientDataJson };
|
|
360
|
+
}
|
|
361
|
+
async startCrossDeviceLink(_config) {
|
|
362
|
+
throw new signer_1.SignerError("backend-unavailable", "cross-device link is host-specific (browser / Tauri); software reference does not implement caBLE");
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
exports.SoftwareP256Authenticator = SoftwareP256Authenticator;
|
|
366
|
+
// --- helpers ---------------------------------------------------------
|
|
367
|
+
function packAux(authData, clientData) {
|
|
368
|
+
const out = new Uint8Array(8 + authData.length + clientData.length);
|
|
369
|
+
const view = new DataView(out.buffer);
|
|
370
|
+
view.setUint32(0, authData.length, true);
|
|
371
|
+
out.set(authData, 4);
|
|
372
|
+
view.setUint32(4 + authData.length, clientData.length, true);
|
|
373
|
+
out.set(clientData, 8 + authData.length);
|
|
374
|
+
return out;
|
|
375
|
+
}
|
|
376
|
+
function randomChallenge() {
|
|
377
|
+
const buf = new Uint8Array(32);
|
|
378
|
+
crypto.getRandomValues(buf);
|
|
379
|
+
return buf;
|
|
380
|
+
}
|
|
381
|
+
function eqBytes(a, b) {
|
|
382
|
+
if (a.length !== b.length)
|
|
383
|
+
return false;
|
|
384
|
+
for (let i = 0; i < a.length; i++)
|
|
385
|
+
if (a[i] !== b[i])
|
|
386
|
+
return false;
|
|
387
|
+
return true;
|
|
388
|
+
}
|
|
389
|
+
function b64UrlNoPad(bytes) {
|
|
390
|
+
let bin = "";
|
|
391
|
+
for (let i = 0; i < bytes.length; i++)
|
|
392
|
+
bin += String.fromCharCode(bytes[i]);
|
|
393
|
+
return btoa(bin).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
394
|
+
}
|
|
395
|
+
function bufferOf(arr) {
|
|
396
|
+
// Strip any subarray-offset by copying into a fresh buffer — most
|
|
397
|
+
// WebAuthn implementations are picky about this.
|
|
398
|
+
const out = new ArrayBuffer(arr.byteLength);
|
|
399
|
+
new Uint8Array(out).set(arr);
|
|
400
|
+
return out;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Browser WebAuthn returns DER-encoded ECDSA signatures from
|
|
404
|
+
* `navigator.credentials.get`. The on-chain validator wants the raw
|
|
405
|
+
* `r || s` 64-byte form. Decode minimal DER:
|
|
406
|
+
*
|
|
407
|
+
* 30 LL 02 RL <r> 02 SL <s>
|
|
408
|
+
*/
|
|
409
|
+
function derToRawP256(der) {
|
|
410
|
+
let i = 0;
|
|
411
|
+
if (der[i++] !== 0x30)
|
|
412
|
+
throw new signer_1.SignerError("transport", "DER: missing SEQUENCE");
|
|
413
|
+
// Length (could be short-form for typical 70-72 byte sigs).
|
|
414
|
+
if (der[i] & 0x80) {
|
|
415
|
+
const lenBytes = der[i++] & 0x7f;
|
|
416
|
+
i += lenBytes;
|
|
417
|
+
}
|
|
418
|
+
else {
|
|
419
|
+
i++;
|
|
420
|
+
}
|
|
421
|
+
if (der[i++] !== 0x02)
|
|
422
|
+
throw new signer_1.SignerError("transport", "DER: missing r INTEGER");
|
|
423
|
+
const rLen = der[i++];
|
|
424
|
+
const rRaw = der.slice(i, i + rLen);
|
|
425
|
+
i += rLen;
|
|
426
|
+
if (der[i++] !== 0x02)
|
|
427
|
+
throw new signer_1.SignerError("transport", "DER: missing s INTEGER");
|
|
428
|
+
const sLen = der[i++];
|
|
429
|
+
const sRaw = der.slice(i, i + sLen);
|
|
430
|
+
// Strip leading 0x00 padding (DER encodes positive ints with a
|
|
431
|
+
// leading zero if MSB set), then left-pad to 32 bytes.
|
|
432
|
+
const r = stripLeadingZero(rRaw);
|
|
433
|
+
const s = stripLeadingZero(sRaw);
|
|
434
|
+
const out = new Uint8Array(64);
|
|
435
|
+
out.set(r, 32 - r.length);
|
|
436
|
+
out.set(s, 64 - s.length);
|
|
437
|
+
return out;
|
|
438
|
+
}
|
|
439
|
+
function stripLeadingZero(b) {
|
|
440
|
+
// Copy into a fresh ArrayBuffer-backed Uint8Array so callers can
|
|
441
|
+
// assign without TS narrowing the buffer type to ArrayBufferLike.
|
|
442
|
+
const start = b.length > 1 && b[0] === 0x00 ? 1 : 0;
|
|
443
|
+
const out = new Uint8Array(b.length - start);
|
|
444
|
+
out.set(b.subarray(start));
|
|
445
|
+
return out;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Extract the raw 64-byte P-256 public key (`x || y`) from the COSE
|
|
449
|
+
* key embedded in a WebAuthn `attestationObject`.
|
|
450
|
+
*
|
|
451
|
+
* The attestationObject is CBOR; its `authData` field embeds an
|
|
452
|
+
* "attested credential data" record that ends with a COSE_Key. For
|
|
453
|
+
* ES256/P-256 (alg=-7, kty=2, crv=1) the key has a fixed structure:
|
|
454
|
+
*
|
|
455
|
+
* A5 ; map(5)
|
|
456
|
+
* 01 02 ; kty: 2 (EC2)
|
|
457
|
+
* 03 26 ; alg: -7 (ES256)
|
|
458
|
+
* 20 01 ; crv: 1 (P-256)
|
|
459
|
+
* 21 58 20 <x32> ; x coord
|
|
460
|
+
* 22 58 20 <y32> ; y coord
|
|
461
|
+
*
|
|
462
|
+
* We scan for `21 58 20` + 32 bytes + `22 58 20` + 32 bytes — a
|
|
463
|
+
* minimal CBOR-aware parse that avoids pulling in a full CBOR lib.
|
|
464
|
+
*/
|
|
465
|
+
function extractCosePublicKey(attestationObject) {
|
|
466
|
+
for (let i = 0; i + 70 < attestationObject.length; i++) {
|
|
467
|
+
if (attestationObject[i] === 0x21 &&
|
|
468
|
+
attestationObject[i + 1] === 0x58 &&
|
|
469
|
+
attestationObject[i + 2] === 0x20 &&
|
|
470
|
+
attestationObject[i + 35] === 0x22 &&
|
|
471
|
+
attestationObject[i + 36] === 0x58 &&
|
|
472
|
+
attestationObject[i + 37] === 0x20) {
|
|
473
|
+
const out = new Uint8Array(64);
|
|
474
|
+
out.set(attestationObject.slice(i + 3, i + 35), 0);
|
|
475
|
+
out.set(attestationObject.slice(i + 38, i + 70), 32);
|
|
476
|
+
return out;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
throw new signer_1.SignerError("transport", "could not locate COSE P-256 public key in attestationObject");
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=passkey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../src/passkey.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -190,21 +190,22 @@ export declare class ProviderClient {
|
|
|
190
190
|
* Register as a provider on the network
|
|
191
191
|
*
|
|
192
192
|
* Model/inference providers do not need to stake TNZO — staking is only
|
|
193
|
-
* required for validators. The `
|
|
193
|
+
* required for validators. The `stake` parameter defaults to "0" (wei).
|
|
194
194
|
*
|
|
195
|
+
* @param providerType - One of "validator", "model_provider", "tee_provider", "storage_provider"
|
|
195
196
|
* @param models - List of model IDs to serve
|
|
196
|
-
* @param
|
|
197
|
+
* @param stake - Stake amount in wei (10^-18 TNZO) as decimal string. Default "0".
|
|
197
198
|
* @returns Transaction hash of the registration
|
|
198
199
|
*
|
|
199
200
|
* @example
|
|
200
201
|
* ```typescript
|
|
201
202
|
* // Register as a model provider — no staking required
|
|
202
203
|
* const models = ["gemma3-270m"];
|
|
203
|
-
* const txHash = await client.provider.register(models);
|
|
204
|
+
* const txHash = await client.provider.register("model_provider", models);
|
|
204
205
|
* console.log("Registration tx:", txHash);
|
|
205
206
|
* ```
|
|
206
207
|
*/
|
|
207
|
-
register(models: string[],
|
|
208
|
+
register(providerType: string, models: string[], stake?: string): Promise<string>;
|
|
208
209
|
/**
|
|
209
210
|
* Get provider statistics
|
|
210
211
|
*
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAY;gBAEX,GAAG,EAAE,SAAS;IAI1B;;;;;;;;;;;;OAYG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIjE;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD;;;;;;;;;;;OAWG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIrE;;;;;;;;;;OAUG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;;;;;;;;;OAUG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;;;;;;;;;OAUG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;;;;;;;;;;;;;;OAeG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3E;;;;;;;;;;;OAWG;IACG,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAIpD;;;;;;;;;;OAUG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.js
CHANGED
|
@@ -150,22 +150,25 @@ class ProviderClient {
|
|
|
150
150
|
* Register as a provider on the network
|
|
151
151
|
*
|
|
152
152
|
* Model/inference providers do not need to stake TNZO — staking is only
|
|
153
|
-
* required for validators. The `
|
|
153
|
+
* required for validators. The `stake` parameter defaults to "0" (wei).
|
|
154
154
|
*
|
|
155
|
+
* @param providerType - One of "validator", "model_provider", "tee_provider", "storage_provider"
|
|
155
156
|
* @param models - List of model IDs to serve
|
|
156
|
-
* @param
|
|
157
|
+
* @param stake - Stake amount in wei (10^-18 TNZO) as decimal string. Default "0".
|
|
157
158
|
* @returns Transaction hash of the registration
|
|
158
159
|
*
|
|
159
160
|
* @example
|
|
160
161
|
* ```typescript
|
|
161
162
|
* // Register as a model provider — no staking required
|
|
162
163
|
* const models = ["gemma3-270m"];
|
|
163
|
-
* const txHash = await client.provider.register(models);
|
|
164
|
+
* const txHash = await client.provider.register("model_provider", models);
|
|
164
165
|
* console.log("Registration tx:", txHash);
|
|
165
166
|
* ```
|
|
166
167
|
*/
|
|
167
|
-
async register(models,
|
|
168
|
-
return await this.rpc.call("tenzro_registerProvider", [
|
|
168
|
+
async register(providerType, models, stake = "0") {
|
|
169
|
+
return await this.rpc.call("tenzro_registerProvider", [
|
|
170
|
+
{ provider_type: providerType, models, stake },
|
|
171
|
+
]);
|
|
169
172
|
}
|
|
170
173
|
/**
|
|
171
174
|
* Get provider statistics
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":";;;AAuEA;;;GAGG;AACH,MAAa,cAAc;IACjB,GAAG,CAAY;IAEvB,YAAY,GAAc;QACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAsB,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,mBAAmB,CAAC,OAAe;QACvC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAmB,4BAA4B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACxF,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,QAAuB;QACjD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAe,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAkB,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/seed-agent.js
CHANGED
|
@@ -26,7 +26,7 @@ class SeedAgentClient {
|
|
|
26
26
|
* @returns Current `TreasuryEarmark`
|
|
27
27
|
*/
|
|
28
28
|
async getTreasuryEarmark() {
|
|
29
|
-
return this.rpc.call("tenzro_getTreasuryEarmark", []);
|
|
29
|
+
return this.rpc.call("tenzro_getTreasuryEarmark", [{}]);
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Fetch a single `Charter` by its identifier.
|
|
@@ -34,14 +34,14 @@ class SeedAgentClient {
|
|
|
34
34
|
* @returns Charter record or null if not found
|
|
35
35
|
*/
|
|
36
36
|
async getSeedAgentCharter(charterId) {
|
|
37
|
-
return this.rpc.call("tenzro_getSeedAgentCharter", [charterId]);
|
|
37
|
+
return this.rpc.call("tenzro_getSeedAgentCharter", [{ charter_id: charterId }]);
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* List every registered `Charter` (active and sunset).
|
|
41
41
|
* @returns Array of charter records
|
|
42
42
|
*/
|
|
43
43
|
async listSeedAgentCharters() {
|
|
44
|
-
return this.rpc.call("tenzro_listSeedAgentCharters", []);
|
|
44
|
+
return this.rpc.call("tenzro_listSeedAgentCharters", [{}]);
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* List provisioned `SeedAgentRecord`s, optionally filtered by charter.
|
|
@@ -49,8 +49,8 @@ class SeedAgentClient {
|
|
|
49
49
|
* @returns Array of seed agent records
|
|
50
50
|
*/
|
|
51
51
|
async listSeedAgents(charterId) {
|
|
52
|
-
const params = charterId === undefined ?
|
|
53
|
-
return this.rpc.call("tenzro_listSeedAgents", params);
|
|
52
|
+
const params = charterId === undefined ? {} : { charter_id: charterId };
|
|
53
|
+
return this.rpc.call("tenzro_listSeedAgents", [params]);
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Returns network activity metrics over the requested window. Used by
|
|
@@ -61,8 +61,8 @@ class SeedAgentClient {
|
|
|
61
61
|
* @returns Activity metrics snapshot
|
|
62
62
|
*/
|
|
63
63
|
async getNetworkActivity(windowBlocks) {
|
|
64
|
-
const params = windowBlocks === undefined ?
|
|
65
|
-
return this.rpc.call("tenzro_getNetworkActivity", params);
|
|
64
|
+
const params = windowBlocks === undefined ? {} : { window_blocks: windowBlocks };
|
|
65
|
+
return this.rpc.call("tenzro_getNetworkActivity", [params]);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
exports.SeedAgentClient = SeedAgentClient;
|