@covia/covia-sdk 1.19.1 → 1.21.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 CHANGED
@@ -76,6 +76,14 @@ const venue = await Grid.connect("your-venue.example.com"); // DNS name → http
76
76
  const venue = await Venue.connect("https://your-venue.example.com");
77
77
  ```
78
78
 
79
+ For an address without a scheme, the SDK picks one from the host:
80
+
81
+ - **Public hosts** use `https://` only. There is no fallback to plain HTTP.
82
+ - **Local hosts** (`localhost`, `*.local`, loopback, and the private ranges `10/8`, `172.16/12`, `192.168/16`, `169.254/16`) try `http://` first, then `https://`, so a venue on your machine or LAN works without TLS.
83
+ - **Explicit `http://` or `https://`** addresses are used exactly as given.
84
+
85
+ Credentials sent over `http://` travel in cleartext, so use `https://` for any venue reached over a network you don't control. To report a security issue, see [SECURITY.md](SECURITY.md).
86
+
79
87
  ### Authentication
80
88
 
81
89
  ```typescript
package/dist/index.d.mts CHANGED
@@ -203,6 +203,48 @@ declare abstract class Asset {
203
203
  invoke(input?: unknown, options?: InvokeOptions): Promise<Job>;
204
204
  }
205
205
 
206
+ /**
207
+ * Ed25519 signers: the key-holding half of every signing path, abstracted so
208
+ * the private key need not be readable bytes.
209
+ *
210
+ * A {@link rawKeySigner} wraps a 32-byte key (the classic path). A
211
+ * {@link webCryptoSigner} wraps a WebCrypto `CryptoKeyPair` whose private key
212
+ * can be **non-extractable**: it signs, but no script can read it back as
213
+ * bytes, and it persists in IndexedDB as a structured-cloneable `CryptoKey`.
214
+ * WebCrypto signing is async, so the {@link Ed25519Signer} contract is too.
215
+ *
216
+ * Ed25519 is deterministic (RFC 8032): the same key and message give the same
217
+ * signature on either path, so tokens are identical whichever signer made them.
218
+ */
219
+ /** Signs with an Ed25519 key that may not be readable as bytes. */
220
+ interface Ed25519Signer {
221
+ /** 32-byte raw public key. */
222
+ readonly publicKey: Uint8Array;
223
+ /** Ed25519 signature (64 bytes) over `data`. */
224
+ sign(data: Uint8Array): Promise<Uint8Array>;
225
+ }
226
+ /** A signer over a raw 32-byte private key (synchronous @noble signing underneath). */
227
+ declare function rawKeySigner(privateKey: Uint8Array): Ed25519Signer;
228
+ /**
229
+ * A signer over a WebCrypto Ed25519 keypair. The private key may be (and
230
+ * normally should be) non-extractable; the public key always is exportable.
231
+ */
232
+ declare function webCryptoSigner(keyPair: CryptoKeyPair): Promise<Ed25519Signer>;
233
+ /** Generate a WebCrypto Ed25519 keypair whose private key cannot be exported. */
234
+ declare function generateNonExtractableKeyPair(): Promise<CryptoKeyPair>;
235
+ /**
236
+ * Import an existing 32-byte private key as a non-extractable WebCrypto
237
+ * keypair — the one-time migration from a stored hex/raw key. The DID is
238
+ * unchanged. The caller should delete its own copy of the raw key afterwards.
239
+ */
240
+ declare function importNonExtractableKey(privateKey: Uint8Array): Promise<CryptoKeyPair>;
241
+ /**
242
+ * Whether this runtime can sign with WebCrypto Ed25519 (current Chrome,
243
+ * Firefox, Safari 17+ and Node). Apps without it fall back to a raw-key
244
+ * signer. Probed once, by generating and signing with a throwaway key.
245
+ */
246
+ declare function isWebCryptoEd25519Supported(): Promise<boolean>;
247
+
206
248
  /**
207
249
  * Abstract base class for authentication strategies.
208
250
  * Subclass this to implement custom authentication.
@@ -224,8 +266,11 @@ declare abstract class Auth {
224
266
  * @param audience - The venue's DID, supplied by the transport. Providers
225
267
  * that bind tokens to the venue's identity (e.g. {@link Ed25519Auth}) use it
226
268
  * as the JWT `aud`; others ignore it.
269
+ * @returns Nothing, or a promise for providers that sign asynchronously
270
+ * (e.g. {@link Ed25519Auth.fromSigner} over a WebCrypto key). The transport
271
+ * awaits it before sending, so callers of `apply` must await it too.
227
272
  */
228
- abstract apply(headers: Record<string, string>, audience?: string): void;
273
+ abstract apply(headers: Record<string, string>, audience?: string): void | Promise<void>;
229
274
  }
230
275
  /** No-op authentication provider. Sends no credentials. */
231
276
  declare class NoAuth extends Auth {
@@ -262,23 +307,34 @@ declare class BasicAuth extends Auth {
262
307
  * client's Ed25519 private key. The server verifies the signature and
263
308
  * extracts the caller's DID from the `sub` claim.
264
309
  *
310
+ * Construct it from a raw 32-byte key, or with {@link Ed25519Auth.fromSigner}
311
+ * from an {@link Ed25519Signer} — e.g. a non-extractable WebCrypto key, which
312
+ * signs without the key ever being readable by page scripts. Signer-backed
313
+ * instances sign asynchronously; the SDK transport awaits them.
314
+ *
265
315
  * Example:
266
316
  * const auth = Ed25519Auth.generate();
267
317
  * console.log(auth.getDID()); // did:key:z6Mk...
268
318
  * const venue = await Grid.connect("https://your-venue.example.com", auth);
319
+ *
320
+ * // Non-extractable key (browser):
321
+ * const signer = await webCryptoSigner(await generateNonExtractableKeyPair());
322
+ * const venue2 = await Grid.connect("https://your-venue.example.com", Ed25519Auth.fromSigner(signer));
269
323
  */
270
324
  declare class Ed25519Auth extends Auth {
271
- private _privateKey;
325
+ /** Present only for raw-key instances; signer-backed ones never see key bytes. */
326
+ private _privateKey?;
327
+ private _signer;
272
328
  private _publicKey;
273
329
  private _did;
274
330
  private _lifetime;
275
331
  private _audience?;
276
332
  /**
277
- * @param privateKey - 32-byte Ed25519 private key
333
+ * @param key - 32-byte Ed25519 private key, or an {@link Ed25519Signer}
278
334
  * @param tokenLifetimeSeconds - JWT lifetime in seconds (default 300 = 5 min)
279
335
  */
280
- constructor(privateKey: Uint8Array, tokenLifetimeSeconds?: number);
281
- apply(headers: Record<string, string>, audience?: string): void;
336
+ constructor(key: Uint8Array | Ed25519Signer, tokenLifetimeSeconds?: number);
337
+ apply(headers: Record<string, string>, audience?: string): void | Promise<void>;
282
338
  /**
283
339
  * Mint a bearer-usable identity JWT for this key — the same token
284
340
  * {@link apply} attaches to every request, exposed for callers that need
@@ -290,10 +346,19 @@ declare class Ed25519Auth extends Auth {
290
346
  * at any venue that accepts the caller's DID, so minting one is refused
291
347
  * rather than silently weakened.
292
348
  *
349
+ * Raw-key instances only: a signer-backed instance signs asynchronously,
350
+ * so use {@link mintIdentityToken}, which works for both.
351
+ *
293
352
  * @param audience - The venue DID the token is bound to (`aud` claim).
294
353
  * @param lifetimeSeconds - Token lifetime; defaults to this instance's.
295
354
  */
296
355
  identityToken(audience?: string, lifetimeSeconds?: number): string;
356
+ /**
357
+ * Async {@link identityToken} that works for raw-key and signer-backed
358
+ * instances alike. Same token, same audience rules.
359
+ */
360
+ mintIdentityToken(audience?: string, lifetimeSeconds?: number): Promise<string>;
361
+ private resolveAudience;
297
362
  /** The caller's DID derived from the public key. */
298
363
  getDID(): string;
299
364
  /**
@@ -308,6 +373,11 @@ declare class Ed25519Auth extends Auth {
308
373
  static generate(tokenLifetimeSeconds?: number): Ed25519Auth;
309
374
  /** Create from a hex-encoded private key string. */
310
375
  static fromHex(privateKeyHex: string, tokenLifetimeSeconds?: number): Ed25519Auth;
376
+ /**
377
+ * Create from an {@link Ed25519Signer}, e.g. `await webCryptoSigner(keyPair)`
378
+ * over a non-extractable WebCrypto key. Requests sign asynchronously.
379
+ */
380
+ static fromSigner(signer: Ed25519Signer, tokenLifetimeSeconds?: number): Ed25519Auth;
311
381
  }
312
382
  /**
313
383
  * @deprecated Renamed to {@link Ed25519Auth} for cross-SDK consistency
@@ -367,7 +437,7 @@ interface VenueRequestContext {
367
437
  baseUrl: string;
368
438
  venueId: string;
369
439
  auth: {
370
- apply(headers: Record<string, string>, audience?: string): void;
440
+ apply(headers: Record<string, string>, audience?: string): void | Promise<void>;
371
441
  };
372
442
  }
373
443
 
@@ -543,11 +613,13 @@ declare class AssetManager {
543
613
  * @param options - Pagination options (offset, limit). Pass
544
614
  * `{ expand: 'metadata' }` to get each item's metadata inlined as
545
615
  * `{id, metadata}` instead of a bare id string, sparing a per-id fetch.
616
+ * Pass `kind: 'data'` or `kind: 'operation'` to have the venue filter the
617
+ * catalog before paging (see {@link CatalogListOptions}).
546
618
  */
547
- list(options: AssetListOptions & {
619
+ list(options: CatalogListOptions & {
548
620
  expand: 'metadata';
549
621
  }): Promise<ExpandedAssetList>;
550
- list(options?: AssetListOptions): Promise<AssetList>;
622
+ list(options?: CatalogListOptions): Promise<AssetList>;
551
623
  /**
552
624
  * List the authenticated caller's own assets — the per-user a/ namespace
553
625
  * populated by `store`/`pin`, distinct from the venue-wide catalog `list()`
@@ -1248,14 +1320,15 @@ declare class Venue implements VenueInterface {
1248
1320
  /**
1249
1321
  * List assets with pagination support (convenience delegate to venue.assets.list)
1250
1322
  * @param options - Pagination options (offset, limit). Pass
1251
- * `{ expand: 'metadata' }` to get each item's metadata inlined.
1323
+ * `{ expand: 'metadata' }` to get each item's metadata inlined, and
1324
+ * `kind` to filter the catalog on the venue.
1252
1325
  * @returns {Promise<AssetList>} Paginated list of asset ids, or of
1253
1326
  * `{id, metadata}` items when `expand: 'metadata'` is requested
1254
1327
  */
1255
- listAssets(options: AssetListOptions & {
1328
+ listAssets(options: CatalogListOptions & {
1256
1329
  expand: 'metadata';
1257
1330
  }): Promise<ExpandedAssetList>;
1258
- listAssets(options?: AssetListOptions): Promise<AssetList>;
1331
+ listAssets(options?: CatalogListOptions): Promise<AssetList>;
1259
1332
  /**
1260
1333
  * List all jobs
1261
1334
  * @returns {Promise<string[]>}
@@ -1369,10 +1442,10 @@ interface VenueInterface {
1369
1442
  getJob(jobId: string): Promise<Job>;
1370
1443
  listJobs(): Promise<string[]>;
1371
1444
  getAsset(assetId: AssetID): Promise<Asset>;
1372
- listAssets(options: AssetListOptions & {
1445
+ listAssets(options: CatalogListOptions & {
1373
1446
  expand: 'metadata';
1374
1447
  }): Promise<ExpandedAssetList>;
1375
- listAssets(options?: AssetListOptions): Promise<AssetList>;
1448
+ listAssets(options?: CatalogListOptions): Promise<AssetList>;
1376
1449
  didDocument(): Promise<DIDDocument>;
1377
1450
  mcpDiscovery(): Promise<MCPDiscovery>;
1378
1451
  agentCard(): Promise<AgentCard>;
@@ -1517,6 +1590,17 @@ interface AssetListOptions {
1517
1590
  limit?: number;
1518
1591
  expand?: 'metadata';
1519
1592
  }
1593
+ /**
1594
+ * Options for the venue-wide catalog listing (`GET /api/v1/assets`).
1595
+ * `kind` restricts it to assets that carry an operation (`'operation'`) or to
1596
+ * those that do not (`'data'`); the venue filters before paging, so `offset`
1597
+ * counts filtered entries and `total` is the filtered size. Venues older than
1598
+ * covia 0.9.9 ignore `kind` and return the whole catalog, so a caller that
1599
+ * depends on the split should still check each item.
1600
+ */
1601
+ interface CatalogListOptions extends AssetListOptions {
1602
+ kind?: 'operation' | 'data';
1603
+ }
1520
1604
  interface AssetList {
1521
1605
  items: string[];
1522
1606
  total: number;
@@ -2677,6 +2761,7 @@ declare function didFromPublicKey(publicKey: Uint8Array): string;
2677
2761
  * `ucans` request array and relayed across cross-venue hops. Delegation chains
2678
2762
  * embed parent tokens as JWT strings in `prf`.
2679
2763
  */
2764
+
2680
2765
  /** The ability that instructs a venue to relay a cross-venue hop as itself. */
2681
2766
  declare const VENUE_RELAY = "venue/relay";
2682
2767
  interface UCANCapability {
@@ -2700,6 +2785,11 @@ declare function didFor(privateKey: Uint8Array): string;
2700
2785
  * @param proofs parent UCAN JWT strings (`prf`) for delegation chains
2701
2786
  */
2702
2787
  declare function createUCANJWT(privateKey: Uint8Array, audienceDID: string, att: UCANCapability[], lifetimeSeconds: number | null, proofs?: string[]): string;
2788
+ /**
2789
+ * {@link createUCANJWT} through an {@link Ed25519Signer}, for issuers whose
2790
+ * key is not readable bytes (e.g. a non-extractable WebCrypto key). Same token.
2791
+ */
2792
+ declare function createUCANJWTWith(signer: Ed25519Signer, audienceDID: string, att: UCANCapability[], lifetimeSeconds: number | null, proofs?: string[]): Promise<string>;
2703
2793
  /**
2704
2794
  * Mint an **identity token**: a UCAN with an EMPTY attenuation list, audienced
2705
2795
  * to `venueDID`. Pure proof of identity — it grants nothing, and being
@@ -2716,6 +2806,8 @@ declare function identityToken(privateKey: Uint8Array, venueDID: string, lifetim
2716
2806
  * in issuance.
2717
2807
  */
2718
2808
  declare function grant(ownerPrivateKey: Uint8Array, audienceDID: string, withResource: string, can: string, lifetimeSeconds: number): string;
2809
+ /** {@link grant} through an {@link Ed25519Signer}. */
2810
+ declare function grantWith(ownerSigner: Ed25519Signer, audienceDID: string, withResource: string, can: string, lifetimeSeconds: number): Promise<string>;
2719
2811
  /**
2720
2812
  * Mint a **relay delegation**: instructs and authorises `venueDID` to make a
2721
2813
  * cross-venue hop authenticated as itself, exercising the caller's authority.
@@ -2724,5 +2816,7 @@ declare function grant(ownerPrivateKey: Uint8Array, audienceDID: string, withRes
2724
2816
  * authenticated caller (COG-15).
2725
2817
  */
2726
2818
  declare function relayDelegation(privateKey: Uint8Array, venueDID: string, lifetimeSeconds: number, caps?: UCANCapability[]): string;
2819
+ /** {@link relayDelegation} through an {@link Ed25519Signer}. */
2820
+ declare function relayDelegationWith(signer: Ed25519Signer, venueDID: string, lifetimeSeconds: number, caps?: UCANCapability[]): Promise<string>;
2727
2821
 
2728
- export { type A2AAuthRef, type A2AImportAgentInput, type A2AImportAgentResult, A2AManager, type A2AMessage, type A2APart, type A2ATask, type AdapterInfo, AdapterManager, type AdaptersResult, Agent, type AgentCancelTaskInput, type AgentCard, type AgentChatInput, type AgentChatResult, type AgentCompactedSegment, type AgentCompleteTaskResult, type AgentContextInput, type AgentCreateInput, type AgentCreateResult, type AgentCycleEndEvent, type AgentCycleStartEvent, type AgentDeleteInput, type AgentDeleteResult, type AgentEvent, type AgentEventEnvelope, type AgentFailTaskResult, type AgentForkInput, type AgentForkResult, type AgentInferenceEndEvent, type AgentInferenceStartEvent, type AgentInfoResult, type AgentListInput, type AgentListResult, AgentManager, type AgentMessageInput, type AgentMessageResult, type AgentRenameSessionResult, type AgentRequestInput, type AgentRequestResult, type AgentResumeInput, type AgentRunEndEvent, type AgentRunStartEvent, type AgentSession, type AgentSessionListOptions, type AgentSessionMessage, type AgentSessionMetadata, AgentSessionNotFoundError, type AgentSessionPage, type AgentSessionRole, AgentStatus, type AgentStatusEvent, type AgentSuspendResult, type AgentToolResultEvent, type AgentToolStartEvent, type AgentTriggerInput, type AgentTriggerResult, type AgentUpdateInput, Asset, type AssetID, type AssetList, type AssetListItem, type AssetListOptions, AssetManager, type AssetMetadata, type AssetMetadataStore, AssetNotFoundError, type AssetPinResult, type AssetSummary, Auth, type AuthenticationKeyEntry, type AuthenticationKeysMap, type AuthenticationKeysResult, type AuthenticatorRevokeResult, BasicAuth, BearerAuth, ChatSession, type ConnectionAttempt, type ContentDetails, type ContentHashResult, CoviaConnectionError, type CoviaConnectionErrorOptions, CoviaError, CoviaTimeoutError, type Credentials, CredentialsHTTP, type DIDDocument, type DIDURL, type DLFSDrivesResult, type DLFSEntry, type DLFSListResult, DLFSManager, DataAsset, Ed25519Auth, type ExecutionScope, type ExpandedAssetList, type FunctionInfo, type FunctionsResult, Grid, GridError, type GroupCount, type InvokeOptions, type InvokePayload, Job, JobFailedError, type JobHistoryOptions, type JobHistoryPage, JobManager, type JobMetadata, JobNotFoundError, JobStatus, KeyPairAuth, type MCPContent, type MCPDiscovery, MCPError, MCPManager, type MCPTool, type MCPToolPage, type MCPToolResult, type MemoryChange, type MemoryEntry, MemoryManager, type MyAssetList, Namespace, NoAuth, NotFoundError, Operation, type OperationDetails, type OperationInfo, OperationManager, type OperationPayload, type OperationRunner, RateLimitError, RunStatus, type SSEEvent, ScopedWorkspace, type SecretExtractInput, type SecretExtractResult, SecretManager, type SecretSetInput, type SecretSetResult, type Skill, type SkillFacet, SkillManager, type SkillMetadata, type StatsData, type StatusData, type UCANAttenuation, type UCANCapability, type UCANIssueInput, type UCANIssueResult, UCANManager, type UCANVerifyResult, UnsupportedVenueFeatureError, type UserInfo, type UserListResult, UserManager, type UserSummary, VENUE_RELAY, Venue, type VenueConstructor, type VenueData, VenueIdentityChangedError, type VenueInterface, type VenueOptions, type WorkspaceAggregateResult, type WorkspaceAppendInput, type WorkspaceAppendResult, type WorkspaceCopyResult, type WorkspaceCountResult, type WorkspaceDeleteInput, type WorkspaceDeleteResult, type WorkspaceFieldValue, type WorkspaceInspectInput, type WorkspaceInspectResult, type WorkspaceListInput, type WorkspaceListResult, WorkspaceManager, type WorkspaceProjectedList, type WorkspaceReadInput, type WorkspaceReadResult, type WorkspaceSliceInput, type WorkspaceSliceResult, type WorkspaceWriteInput, type WorkspaceWriteResult, assetHash, createSSEEvent, createUCANJWT, decodePublicKey, didFor, didFromPublicKey, didMethod, didUrl, encodePublicKey, fetchStreamWithError, fetchWithError, generateKeyPair, getAssetIdFromPath, getAssetIdFromVenueId, getAssetMetadataStore, getParsedAssetId, grant, hexToPrivateKey, identityToken, isDid, isJobComplete, isJobFinished, isJobPaused, logger, parseDidUrl, parseRetryAfterMs, parseSSEStream, privateKeyToHex, relayDelegation, retryDelayMs, setAssetMetadataStore, venueBaseUrlCandidates };
2822
+ export { type A2AAuthRef, type A2AImportAgentInput, type A2AImportAgentResult, A2AManager, type A2AMessage, type A2APart, type A2ATask, type AdapterInfo, AdapterManager, type AdaptersResult, Agent, type AgentCancelTaskInput, type AgentCard, type AgentChatInput, type AgentChatResult, type AgentCompactedSegment, type AgentCompleteTaskResult, type AgentContextInput, type AgentCreateInput, type AgentCreateResult, type AgentCycleEndEvent, type AgentCycleStartEvent, type AgentDeleteInput, type AgentDeleteResult, type AgentEvent, type AgentEventEnvelope, type AgentFailTaskResult, type AgentForkInput, type AgentForkResult, type AgentInferenceEndEvent, type AgentInferenceStartEvent, type AgentInfoResult, type AgentListInput, type AgentListResult, AgentManager, type AgentMessageInput, type AgentMessageResult, type AgentRenameSessionResult, type AgentRequestInput, type AgentRequestResult, type AgentResumeInput, type AgentRunEndEvent, type AgentRunStartEvent, type AgentSession, type AgentSessionListOptions, type AgentSessionMessage, type AgentSessionMetadata, AgentSessionNotFoundError, type AgentSessionPage, type AgentSessionRole, AgentStatus, type AgentStatusEvent, type AgentSuspendResult, type AgentToolResultEvent, type AgentToolStartEvent, type AgentTriggerInput, type AgentTriggerResult, type AgentUpdateInput, Asset, type AssetID, type AssetList, type AssetListItem, type AssetListOptions, AssetManager, type AssetMetadata, type AssetMetadataStore, AssetNotFoundError, type AssetPinResult, type AssetSummary, Auth, type AuthenticationKeyEntry, type AuthenticationKeysMap, type AuthenticationKeysResult, type AuthenticatorRevokeResult, BasicAuth, BearerAuth, type CatalogListOptions, ChatSession, type ConnectionAttempt, type ContentDetails, type ContentHashResult, CoviaConnectionError, type CoviaConnectionErrorOptions, CoviaError, CoviaTimeoutError, type Credentials, CredentialsHTTP, type DIDDocument, type DIDURL, type DLFSDrivesResult, type DLFSEntry, type DLFSListResult, DLFSManager, DataAsset, Ed25519Auth, type Ed25519Signer, type ExecutionScope, type ExpandedAssetList, type FunctionInfo, type FunctionsResult, Grid, GridError, type GroupCount, type InvokeOptions, type InvokePayload, Job, JobFailedError, type JobHistoryOptions, type JobHistoryPage, JobManager, type JobMetadata, JobNotFoundError, JobStatus, KeyPairAuth, type MCPContent, type MCPDiscovery, MCPError, MCPManager, type MCPTool, type MCPToolPage, type MCPToolResult, type MemoryChange, type MemoryEntry, MemoryManager, type MyAssetList, Namespace, NoAuth, NotFoundError, Operation, type OperationDetails, type OperationInfo, OperationManager, type OperationPayload, type OperationRunner, RateLimitError, RunStatus, type SSEEvent, ScopedWorkspace, type SecretExtractInput, type SecretExtractResult, SecretManager, type SecretSetInput, type SecretSetResult, type Skill, type SkillFacet, SkillManager, type SkillMetadata, type StatsData, type StatusData, type UCANAttenuation, type UCANCapability, type UCANIssueInput, type UCANIssueResult, UCANManager, type UCANVerifyResult, UnsupportedVenueFeatureError, type UserInfo, type UserListResult, UserManager, type UserSummary, VENUE_RELAY, Venue, type VenueConstructor, type VenueData, VenueIdentityChangedError, type VenueInterface, type VenueOptions, type WorkspaceAggregateResult, type WorkspaceAppendInput, type WorkspaceAppendResult, type WorkspaceCopyResult, type WorkspaceCountResult, type WorkspaceDeleteInput, type WorkspaceDeleteResult, type WorkspaceFieldValue, type WorkspaceInspectInput, type WorkspaceInspectResult, type WorkspaceListInput, type WorkspaceListResult, WorkspaceManager, type WorkspaceProjectedList, type WorkspaceReadInput, type WorkspaceReadResult, type WorkspaceSliceInput, type WorkspaceSliceResult, type WorkspaceWriteInput, type WorkspaceWriteResult, assetHash, createSSEEvent, createUCANJWT, createUCANJWTWith, decodePublicKey, didFor, didFromPublicKey, didMethod, didUrl, encodePublicKey, fetchStreamWithError, fetchWithError, generateKeyPair, generateNonExtractableKeyPair, getAssetIdFromPath, getAssetIdFromVenueId, getAssetMetadataStore, getParsedAssetId, grant, grantWith, hexToPrivateKey, identityToken, importNonExtractableKey, isDid, isJobComplete, isJobFinished, isJobPaused, isWebCryptoEd25519Supported, logger, parseDidUrl, parseRetryAfterMs, parseSSEStream, privateKeyToHex, rawKeySigner, relayDelegation, relayDelegationWith, retryDelayMs, setAssetMetadataStore, venueBaseUrlCandidates, webCryptoSigner };
package/dist/index.d.ts CHANGED
@@ -203,6 +203,48 @@ declare abstract class Asset {
203
203
  invoke(input?: unknown, options?: InvokeOptions): Promise<Job>;
204
204
  }
205
205
 
206
+ /**
207
+ * Ed25519 signers: the key-holding half of every signing path, abstracted so
208
+ * the private key need not be readable bytes.
209
+ *
210
+ * A {@link rawKeySigner} wraps a 32-byte key (the classic path). A
211
+ * {@link webCryptoSigner} wraps a WebCrypto `CryptoKeyPair` whose private key
212
+ * can be **non-extractable**: it signs, but no script can read it back as
213
+ * bytes, and it persists in IndexedDB as a structured-cloneable `CryptoKey`.
214
+ * WebCrypto signing is async, so the {@link Ed25519Signer} contract is too.
215
+ *
216
+ * Ed25519 is deterministic (RFC 8032): the same key and message give the same
217
+ * signature on either path, so tokens are identical whichever signer made them.
218
+ */
219
+ /** Signs with an Ed25519 key that may not be readable as bytes. */
220
+ interface Ed25519Signer {
221
+ /** 32-byte raw public key. */
222
+ readonly publicKey: Uint8Array;
223
+ /** Ed25519 signature (64 bytes) over `data`. */
224
+ sign(data: Uint8Array): Promise<Uint8Array>;
225
+ }
226
+ /** A signer over a raw 32-byte private key (synchronous @noble signing underneath). */
227
+ declare function rawKeySigner(privateKey: Uint8Array): Ed25519Signer;
228
+ /**
229
+ * A signer over a WebCrypto Ed25519 keypair. The private key may be (and
230
+ * normally should be) non-extractable; the public key always is exportable.
231
+ */
232
+ declare function webCryptoSigner(keyPair: CryptoKeyPair): Promise<Ed25519Signer>;
233
+ /** Generate a WebCrypto Ed25519 keypair whose private key cannot be exported. */
234
+ declare function generateNonExtractableKeyPair(): Promise<CryptoKeyPair>;
235
+ /**
236
+ * Import an existing 32-byte private key as a non-extractable WebCrypto
237
+ * keypair — the one-time migration from a stored hex/raw key. The DID is
238
+ * unchanged. The caller should delete its own copy of the raw key afterwards.
239
+ */
240
+ declare function importNonExtractableKey(privateKey: Uint8Array): Promise<CryptoKeyPair>;
241
+ /**
242
+ * Whether this runtime can sign with WebCrypto Ed25519 (current Chrome,
243
+ * Firefox, Safari 17+ and Node). Apps without it fall back to a raw-key
244
+ * signer. Probed once, by generating and signing with a throwaway key.
245
+ */
246
+ declare function isWebCryptoEd25519Supported(): Promise<boolean>;
247
+
206
248
  /**
207
249
  * Abstract base class for authentication strategies.
208
250
  * Subclass this to implement custom authentication.
@@ -224,8 +266,11 @@ declare abstract class Auth {
224
266
  * @param audience - The venue's DID, supplied by the transport. Providers
225
267
  * that bind tokens to the venue's identity (e.g. {@link Ed25519Auth}) use it
226
268
  * as the JWT `aud`; others ignore it.
269
+ * @returns Nothing, or a promise for providers that sign asynchronously
270
+ * (e.g. {@link Ed25519Auth.fromSigner} over a WebCrypto key). The transport
271
+ * awaits it before sending, so callers of `apply` must await it too.
227
272
  */
228
- abstract apply(headers: Record<string, string>, audience?: string): void;
273
+ abstract apply(headers: Record<string, string>, audience?: string): void | Promise<void>;
229
274
  }
230
275
  /** No-op authentication provider. Sends no credentials. */
231
276
  declare class NoAuth extends Auth {
@@ -262,23 +307,34 @@ declare class BasicAuth extends Auth {
262
307
  * client's Ed25519 private key. The server verifies the signature and
263
308
  * extracts the caller's DID from the `sub` claim.
264
309
  *
310
+ * Construct it from a raw 32-byte key, or with {@link Ed25519Auth.fromSigner}
311
+ * from an {@link Ed25519Signer} — e.g. a non-extractable WebCrypto key, which
312
+ * signs without the key ever being readable by page scripts. Signer-backed
313
+ * instances sign asynchronously; the SDK transport awaits them.
314
+ *
265
315
  * Example:
266
316
  * const auth = Ed25519Auth.generate();
267
317
  * console.log(auth.getDID()); // did:key:z6Mk...
268
318
  * const venue = await Grid.connect("https://your-venue.example.com", auth);
319
+ *
320
+ * // Non-extractable key (browser):
321
+ * const signer = await webCryptoSigner(await generateNonExtractableKeyPair());
322
+ * const venue2 = await Grid.connect("https://your-venue.example.com", Ed25519Auth.fromSigner(signer));
269
323
  */
270
324
  declare class Ed25519Auth extends Auth {
271
- private _privateKey;
325
+ /** Present only for raw-key instances; signer-backed ones never see key bytes. */
326
+ private _privateKey?;
327
+ private _signer;
272
328
  private _publicKey;
273
329
  private _did;
274
330
  private _lifetime;
275
331
  private _audience?;
276
332
  /**
277
- * @param privateKey - 32-byte Ed25519 private key
333
+ * @param key - 32-byte Ed25519 private key, or an {@link Ed25519Signer}
278
334
  * @param tokenLifetimeSeconds - JWT lifetime in seconds (default 300 = 5 min)
279
335
  */
280
- constructor(privateKey: Uint8Array, tokenLifetimeSeconds?: number);
281
- apply(headers: Record<string, string>, audience?: string): void;
336
+ constructor(key: Uint8Array | Ed25519Signer, tokenLifetimeSeconds?: number);
337
+ apply(headers: Record<string, string>, audience?: string): void | Promise<void>;
282
338
  /**
283
339
  * Mint a bearer-usable identity JWT for this key — the same token
284
340
  * {@link apply} attaches to every request, exposed for callers that need
@@ -290,10 +346,19 @@ declare class Ed25519Auth extends Auth {
290
346
  * at any venue that accepts the caller's DID, so minting one is refused
291
347
  * rather than silently weakened.
292
348
  *
349
+ * Raw-key instances only: a signer-backed instance signs asynchronously,
350
+ * so use {@link mintIdentityToken}, which works for both.
351
+ *
293
352
  * @param audience - The venue DID the token is bound to (`aud` claim).
294
353
  * @param lifetimeSeconds - Token lifetime; defaults to this instance's.
295
354
  */
296
355
  identityToken(audience?: string, lifetimeSeconds?: number): string;
356
+ /**
357
+ * Async {@link identityToken} that works for raw-key and signer-backed
358
+ * instances alike. Same token, same audience rules.
359
+ */
360
+ mintIdentityToken(audience?: string, lifetimeSeconds?: number): Promise<string>;
361
+ private resolveAudience;
297
362
  /** The caller's DID derived from the public key. */
298
363
  getDID(): string;
299
364
  /**
@@ -308,6 +373,11 @@ declare class Ed25519Auth extends Auth {
308
373
  static generate(tokenLifetimeSeconds?: number): Ed25519Auth;
309
374
  /** Create from a hex-encoded private key string. */
310
375
  static fromHex(privateKeyHex: string, tokenLifetimeSeconds?: number): Ed25519Auth;
376
+ /**
377
+ * Create from an {@link Ed25519Signer}, e.g. `await webCryptoSigner(keyPair)`
378
+ * over a non-extractable WebCrypto key. Requests sign asynchronously.
379
+ */
380
+ static fromSigner(signer: Ed25519Signer, tokenLifetimeSeconds?: number): Ed25519Auth;
311
381
  }
312
382
  /**
313
383
  * @deprecated Renamed to {@link Ed25519Auth} for cross-SDK consistency
@@ -367,7 +437,7 @@ interface VenueRequestContext {
367
437
  baseUrl: string;
368
438
  venueId: string;
369
439
  auth: {
370
- apply(headers: Record<string, string>, audience?: string): void;
440
+ apply(headers: Record<string, string>, audience?: string): void | Promise<void>;
371
441
  };
372
442
  }
373
443
 
@@ -543,11 +613,13 @@ declare class AssetManager {
543
613
  * @param options - Pagination options (offset, limit). Pass
544
614
  * `{ expand: 'metadata' }` to get each item's metadata inlined as
545
615
  * `{id, metadata}` instead of a bare id string, sparing a per-id fetch.
616
+ * Pass `kind: 'data'` or `kind: 'operation'` to have the venue filter the
617
+ * catalog before paging (see {@link CatalogListOptions}).
546
618
  */
547
- list(options: AssetListOptions & {
619
+ list(options: CatalogListOptions & {
548
620
  expand: 'metadata';
549
621
  }): Promise<ExpandedAssetList>;
550
- list(options?: AssetListOptions): Promise<AssetList>;
622
+ list(options?: CatalogListOptions): Promise<AssetList>;
551
623
  /**
552
624
  * List the authenticated caller's own assets — the per-user a/ namespace
553
625
  * populated by `store`/`pin`, distinct from the venue-wide catalog `list()`
@@ -1248,14 +1320,15 @@ declare class Venue implements VenueInterface {
1248
1320
  /**
1249
1321
  * List assets with pagination support (convenience delegate to venue.assets.list)
1250
1322
  * @param options - Pagination options (offset, limit). Pass
1251
- * `{ expand: 'metadata' }` to get each item's metadata inlined.
1323
+ * `{ expand: 'metadata' }` to get each item's metadata inlined, and
1324
+ * `kind` to filter the catalog on the venue.
1252
1325
  * @returns {Promise<AssetList>} Paginated list of asset ids, or of
1253
1326
  * `{id, metadata}` items when `expand: 'metadata'` is requested
1254
1327
  */
1255
- listAssets(options: AssetListOptions & {
1328
+ listAssets(options: CatalogListOptions & {
1256
1329
  expand: 'metadata';
1257
1330
  }): Promise<ExpandedAssetList>;
1258
- listAssets(options?: AssetListOptions): Promise<AssetList>;
1331
+ listAssets(options?: CatalogListOptions): Promise<AssetList>;
1259
1332
  /**
1260
1333
  * List all jobs
1261
1334
  * @returns {Promise<string[]>}
@@ -1369,10 +1442,10 @@ interface VenueInterface {
1369
1442
  getJob(jobId: string): Promise<Job>;
1370
1443
  listJobs(): Promise<string[]>;
1371
1444
  getAsset(assetId: AssetID): Promise<Asset>;
1372
- listAssets(options: AssetListOptions & {
1445
+ listAssets(options: CatalogListOptions & {
1373
1446
  expand: 'metadata';
1374
1447
  }): Promise<ExpandedAssetList>;
1375
- listAssets(options?: AssetListOptions): Promise<AssetList>;
1448
+ listAssets(options?: CatalogListOptions): Promise<AssetList>;
1376
1449
  didDocument(): Promise<DIDDocument>;
1377
1450
  mcpDiscovery(): Promise<MCPDiscovery>;
1378
1451
  agentCard(): Promise<AgentCard>;
@@ -1517,6 +1590,17 @@ interface AssetListOptions {
1517
1590
  limit?: number;
1518
1591
  expand?: 'metadata';
1519
1592
  }
1593
+ /**
1594
+ * Options for the venue-wide catalog listing (`GET /api/v1/assets`).
1595
+ * `kind` restricts it to assets that carry an operation (`'operation'`) or to
1596
+ * those that do not (`'data'`); the venue filters before paging, so `offset`
1597
+ * counts filtered entries and `total` is the filtered size. Venues older than
1598
+ * covia 0.9.9 ignore `kind` and return the whole catalog, so a caller that
1599
+ * depends on the split should still check each item.
1600
+ */
1601
+ interface CatalogListOptions extends AssetListOptions {
1602
+ kind?: 'operation' | 'data';
1603
+ }
1520
1604
  interface AssetList {
1521
1605
  items: string[];
1522
1606
  total: number;
@@ -2677,6 +2761,7 @@ declare function didFromPublicKey(publicKey: Uint8Array): string;
2677
2761
  * `ucans` request array and relayed across cross-venue hops. Delegation chains
2678
2762
  * embed parent tokens as JWT strings in `prf`.
2679
2763
  */
2764
+
2680
2765
  /** The ability that instructs a venue to relay a cross-venue hop as itself. */
2681
2766
  declare const VENUE_RELAY = "venue/relay";
2682
2767
  interface UCANCapability {
@@ -2700,6 +2785,11 @@ declare function didFor(privateKey: Uint8Array): string;
2700
2785
  * @param proofs parent UCAN JWT strings (`prf`) for delegation chains
2701
2786
  */
2702
2787
  declare function createUCANJWT(privateKey: Uint8Array, audienceDID: string, att: UCANCapability[], lifetimeSeconds: number | null, proofs?: string[]): string;
2788
+ /**
2789
+ * {@link createUCANJWT} through an {@link Ed25519Signer}, for issuers whose
2790
+ * key is not readable bytes (e.g. a non-extractable WebCrypto key). Same token.
2791
+ */
2792
+ declare function createUCANJWTWith(signer: Ed25519Signer, audienceDID: string, att: UCANCapability[], lifetimeSeconds: number | null, proofs?: string[]): Promise<string>;
2703
2793
  /**
2704
2794
  * Mint an **identity token**: a UCAN with an EMPTY attenuation list, audienced
2705
2795
  * to `venueDID`. Pure proof of identity — it grants nothing, and being
@@ -2716,6 +2806,8 @@ declare function identityToken(privateKey: Uint8Array, venueDID: string, lifetim
2716
2806
  * in issuance.
2717
2807
  */
2718
2808
  declare function grant(ownerPrivateKey: Uint8Array, audienceDID: string, withResource: string, can: string, lifetimeSeconds: number): string;
2809
+ /** {@link grant} through an {@link Ed25519Signer}. */
2810
+ declare function grantWith(ownerSigner: Ed25519Signer, audienceDID: string, withResource: string, can: string, lifetimeSeconds: number): Promise<string>;
2719
2811
  /**
2720
2812
  * Mint a **relay delegation**: instructs and authorises `venueDID` to make a
2721
2813
  * cross-venue hop authenticated as itself, exercising the caller's authority.
@@ -2724,5 +2816,7 @@ declare function grant(ownerPrivateKey: Uint8Array, audienceDID: string, withRes
2724
2816
  * authenticated caller (COG-15).
2725
2817
  */
2726
2818
  declare function relayDelegation(privateKey: Uint8Array, venueDID: string, lifetimeSeconds: number, caps?: UCANCapability[]): string;
2819
+ /** {@link relayDelegation} through an {@link Ed25519Signer}. */
2820
+ declare function relayDelegationWith(signer: Ed25519Signer, venueDID: string, lifetimeSeconds: number, caps?: UCANCapability[]): Promise<string>;
2727
2821
 
2728
- export { type A2AAuthRef, type A2AImportAgentInput, type A2AImportAgentResult, A2AManager, type A2AMessage, type A2APart, type A2ATask, type AdapterInfo, AdapterManager, type AdaptersResult, Agent, type AgentCancelTaskInput, type AgentCard, type AgentChatInput, type AgentChatResult, type AgentCompactedSegment, type AgentCompleteTaskResult, type AgentContextInput, type AgentCreateInput, type AgentCreateResult, type AgentCycleEndEvent, type AgentCycleStartEvent, type AgentDeleteInput, type AgentDeleteResult, type AgentEvent, type AgentEventEnvelope, type AgentFailTaskResult, type AgentForkInput, type AgentForkResult, type AgentInferenceEndEvent, type AgentInferenceStartEvent, type AgentInfoResult, type AgentListInput, type AgentListResult, AgentManager, type AgentMessageInput, type AgentMessageResult, type AgentRenameSessionResult, type AgentRequestInput, type AgentRequestResult, type AgentResumeInput, type AgentRunEndEvent, type AgentRunStartEvent, type AgentSession, type AgentSessionListOptions, type AgentSessionMessage, type AgentSessionMetadata, AgentSessionNotFoundError, type AgentSessionPage, type AgentSessionRole, AgentStatus, type AgentStatusEvent, type AgentSuspendResult, type AgentToolResultEvent, type AgentToolStartEvent, type AgentTriggerInput, type AgentTriggerResult, type AgentUpdateInput, Asset, type AssetID, type AssetList, type AssetListItem, type AssetListOptions, AssetManager, type AssetMetadata, type AssetMetadataStore, AssetNotFoundError, type AssetPinResult, type AssetSummary, Auth, type AuthenticationKeyEntry, type AuthenticationKeysMap, type AuthenticationKeysResult, type AuthenticatorRevokeResult, BasicAuth, BearerAuth, ChatSession, type ConnectionAttempt, type ContentDetails, type ContentHashResult, CoviaConnectionError, type CoviaConnectionErrorOptions, CoviaError, CoviaTimeoutError, type Credentials, CredentialsHTTP, type DIDDocument, type DIDURL, type DLFSDrivesResult, type DLFSEntry, type DLFSListResult, DLFSManager, DataAsset, Ed25519Auth, type ExecutionScope, type ExpandedAssetList, type FunctionInfo, type FunctionsResult, Grid, GridError, type GroupCount, type InvokeOptions, type InvokePayload, Job, JobFailedError, type JobHistoryOptions, type JobHistoryPage, JobManager, type JobMetadata, JobNotFoundError, JobStatus, KeyPairAuth, type MCPContent, type MCPDiscovery, MCPError, MCPManager, type MCPTool, type MCPToolPage, type MCPToolResult, type MemoryChange, type MemoryEntry, MemoryManager, type MyAssetList, Namespace, NoAuth, NotFoundError, Operation, type OperationDetails, type OperationInfo, OperationManager, type OperationPayload, type OperationRunner, RateLimitError, RunStatus, type SSEEvent, ScopedWorkspace, type SecretExtractInput, type SecretExtractResult, SecretManager, type SecretSetInput, type SecretSetResult, type Skill, type SkillFacet, SkillManager, type SkillMetadata, type StatsData, type StatusData, type UCANAttenuation, type UCANCapability, type UCANIssueInput, type UCANIssueResult, UCANManager, type UCANVerifyResult, UnsupportedVenueFeatureError, type UserInfo, type UserListResult, UserManager, type UserSummary, VENUE_RELAY, Venue, type VenueConstructor, type VenueData, VenueIdentityChangedError, type VenueInterface, type VenueOptions, type WorkspaceAggregateResult, type WorkspaceAppendInput, type WorkspaceAppendResult, type WorkspaceCopyResult, type WorkspaceCountResult, type WorkspaceDeleteInput, type WorkspaceDeleteResult, type WorkspaceFieldValue, type WorkspaceInspectInput, type WorkspaceInspectResult, type WorkspaceListInput, type WorkspaceListResult, WorkspaceManager, type WorkspaceProjectedList, type WorkspaceReadInput, type WorkspaceReadResult, type WorkspaceSliceInput, type WorkspaceSliceResult, type WorkspaceWriteInput, type WorkspaceWriteResult, assetHash, createSSEEvent, createUCANJWT, decodePublicKey, didFor, didFromPublicKey, didMethod, didUrl, encodePublicKey, fetchStreamWithError, fetchWithError, generateKeyPair, getAssetIdFromPath, getAssetIdFromVenueId, getAssetMetadataStore, getParsedAssetId, grant, hexToPrivateKey, identityToken, isDid, isJobComplete, isJobFinished, isJobPaused, logger, parseDidUrl, parseRetryAfterMs, parseSSEStream, privateKeyToHex, relayDelegation, retryDelayMs, setAssetMetadataStore, venueBaseUrlCandidates };
2822
+ export { type A2AAuthRef, type A2AImportAgentInput, type A2AImportAgentResult, A2AManager, type A2AMessage, type A2APart, type A2ATask, type AdapterInfo, AdapterManager, type AdaptersResult, Agent, type AgentCancelTaskInput, type AgentCard, type AgentChatInput, type AgentChatResult, type AgentCompactedSegment, type AgentCompleteTaskResult, type AgentContextInput, type AgentCreateInput, type AgentCreateResult, type AgentCycleEndEvent, type AgentCycleStartEvent, type AgentDeleteInput, type AgentDeleteResult, type AgentEvent, type AgentEventEnvelope, type AgentFailTaskResult, type AgentForkInput, type AgentForkResult, type AgentInferenceEndEvent, type AgentInferenceStartEvent, type AgentInfoResult, type AgentListInput, type AgentListResult, AgentManager, type AgentMessageInput, type AgentMessageResult, type AgentRenameSessionResult, type AgentRequestInput, type AgentRequestResult, type AgentResumeInput, type AgentRunEndEvent, type AgentRunStartEvent, type AgentSession, type AgentSessionListOptions, type AgentSessionMessage, type AgentSessionMetadata, AgentSessionNotFoundError, type AgentSessionPage, type AgentSessionRole, AgentStatus, type AgentStatusEvent, type AgentSuspendResult, type AgentToolResultEvent, type AgentToolStartEvent, type AgentTriggerInput, type AgentTriggerResult, type AgentUpdateInput, Asset, type AssetID, type AssetList, type AssetListItem, type AssetListOptions, AssetManager, type AssetMetadata, type AssetMetadataStore, AssetNotFoundError, type AssetPinResult, type AssetSummary, Auth, type AuthenticationKeyEntry, type AuthenticationKeysMap, type AuthenticationKeysResult, type AuthenticatorRevokeResult, BasicAuth, BearerAuth, type CatalogListOptions, ChatSession, type ConnectionAttempt, type ContentDetails, type ContentHashResult, CoviaConnectionError, type CoviaConnectionErrorOptions, CoviaError, CoviaTimeoutError, type Credentials, CredentialsHTTP, type DIDDocument, type DIDURL, type DLFSDrivesResult, type DLFSEntry, type DLFSListResult, DLFSManager, DataAsset, Ed25519Auth, type Ed25519Signer, type ExecutionScope, type ExpandedAssetList, type FunctionInfo, type FunctionsResult, Grid, GridError, type GroupCount, type InvokeOptions, type InvokePayload, Job, JobFailedError, type JobHistoryOptions, type JobHistoryPage, JobManager, type JobMetadata, JobNotFoundError, JobStatus, KeyPairAuth, type MCPContent, type MCPDiscovery, MCPError, MCPManager, type MCPTool, type MCPToolPage, type MCPToolResult, type MemoryChange, type MemoryEntry, MemoryManager, type MyAssetList, Namespace, NoAuth, NotFoundError, Operation, type OperationDetails, type OperationInfo, OperationManager, type OperationPayload, type OperationRunner, RateLimitError, RunStatus, type SSEEvent, ScopedWorkspace, type SecretExtractInput, type SecretExtractResult, SecretManager, type SecretSetInput, type SecretSetResult, type Skill, type SkillFacet, SkillManager, type SkillMetadata, type StatsData, type StatusData, type UCANAttenuation, type UCANCapability, type UCANIssueInput, type UCANIssueResult, UCANManager, type UCANVerifyResult, UnsupportedVenueFeatureError, type UserInfo, type UserListResult, UserManager, type UserSummary, VENUE_RELAY, Venue, type VenueConstructor, type VenueData, VenueIdentityChangedError, type VenueInterface, type VenueOptions, type WorkspaceAggregateResult, type WorkspaceAppendInput, type WorkspaceAppendResult, type WorkspaceCopyResult, type WorkspaceCountResult, type WorkspaceDeleteInput, type WorkspaceDeleteResult, type WorkspaceFieldValue, type WorkspaceInspectInput, type WorkspaceInspectResult, type WorkspaceListInput, type WorkspaceListResult, WorkspaceManager, type WorkspaceProjectedList, type WorkspaceReadInput, type WorkspaceReadResult, type WorkspaceSliceInput, type WorkspaceSliceResult, type WorkspaceWriteInput, type WorkspaceWriteResult, assetHash, createSSEEvent, createUCANJWT, createUCANJWTWith, decodePublicKey, didFor, didFromPublicKey, didMethod, didUrl, encodePublicKey, fetchStreamWithError, fetchWithError, generateKeyPair, generateNonExtractableKeyPair, getAssetIdFromPath, getAssetIdFromVenueId, getAssetMetadataStore, getParsedAssetId, grant, grantWith, hexToPrivateKey, identityToken, importNonExtractableKey, isDid, isJobComplete, isJobFinished, isJobPaused, isWebCryptoEd25519Supported, logger, parseDidUrl, parseRetryAfterMs, parseSSEStream, privateKeyToHex, rawKeySigner, relayDelegation, relayDelegationWith, retryDelayMs, setAssetMetadataStore, venueBaseUrlCandidates, webCryptoSigner };