@muhkoo/connect 0.15.0-alpha.11 → 0.15.0-alpha.13

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.
@@ -7692,7 +7692,7 @@ function manifestStat(m) {
7692
7692
  * expect (and isn't serving a stale cached bundle). Keep this in sync with
7693
7693
  * `package.json` `version`.
7694
7694
  */
7695
- const VERSION = "0.15.0-alpha.11";
7695
+ const VERSION = "0.15.0-alpha.13";
7696
7696
 
7697
7697
  /**
7698
7698
  * `HttpClient` — the one place the unified {@link Client} talks to the
@@ -7851,6 +7851,9 @@ class HttpClient {
7851
7851
  post(path, body) {
7852
7852
  return this.request("POST", path, body);
7853
7853
  }
7854
+ put(path, body) {
7855
+ return this.request("PUT", path, body);
7856
+ }
7854
7857
  patch(path, body) {
7855
7858
  return this.request("PATCH", path, body);
7856
7859
  }
@@ -16904,6 +16907,343 @@ class AppNamespace {
16904
16907
  }
16905
16908
  }
16906
16909
 
16910
+ /**
16911
+ * `client.vectors` — vector search over the app's collections. A developer
16912
+ * defines a collection (text or vectors mode, filterable fields, access) in the
16913
+ * Muhkoo portal or CLI; this namespace reads and writes its entries:
16914
+ *
16915
+ * const docs = client.vectors.collection('docs');
16916
+ * const { mutationId } = await docs.upsert([
16917
+ * { id: 'doc-1', text: 'How to reset your password…', data: { category: 'faq' } },
16918
+ * ]);
16919
+ * const state = await docs.status(mutationId); // 'pending' | 'done' | 'unknown'
16920
+ * const matches = await docs.query({ text: 'forgot password', topK: 5, filter: { category: 'faq' } });
16921
+ * const [entry] = await docs.get(['doc-1']);
16922
+ * await docs.delete(['doc-1']);
16923
+ *
16924
+ * Writes are asynchronous: upsert and delete return a `mutationId` at once, and
16925
+ * entries usually become searchable within one to two minutes. `get` returns
16926
+ * only entries whose writes have finished, never ones still pending.
16927
+ *
16928
+ * Entries are server-readable: Muhkoo stores the text, vectors and data you send
16929
+ * so it can embed and search them. Don't put anything in a collection that the
16930
+ * platform must not see.
16931
+ *
16932
+ * Authorization is the app key ({@link HttpClient} stamps it on every request);
16933
+ * the app and environment come from the key. Server errors (`{ error, code }`)
16934
+ * reach callers as {@link HttpError}; the SDK does no validation of its own.
16935
+ */
16936
+ const READY_SENDER = "__muhkoo__";
16937
+ const READY_SUBJECT = "muhkoo.vectors.ready";
16938
+ const DEFAULT_WAIT_TIMEOUT_MS = 300_000;
16939
+ const POLL_FIRST_MS = 250;
16940
+ const POLL_MAX_MS = 4_000;
16941
+ const POLL_CONNECTED_MS = 5_000;
16942
+ /**
16943
+ * A wait for a write ran out of time. The write itself was accepted; check
16944
+ * {@link VectorCollection.status} later with `mutationId`.
16945
+ */
16946
+ class VectorWaitTimeoutError extends Error {
16947
+ mutationId;
16948
+ constructor(mutationId, timeoutMs) {
16949
+ super(`Timed out after ${timeoutMs} ms waiting for mutation ${mutationId}`);
16950
+ this.name = "VectorWaitTimeoutError";
16951
+ this.mutationId = mutationId;
16952
+ }
16953
+ }
16954
+ function isReadyEvent(data) {
16955
+ if (!data || typeof data !== "object")
16956
+ return false;
16957
+ const d = data;
16958
+ return (typeof d.collection === "string" &&
16959
+ typeof d.mutationId === "string" &&
16960
+ Array.isArray(d.ids) &&
16961
+ d.ids.every((id) => typeof id === "string"));
16962
+ }
16963
+ /** A handle on one collection. Cheap to make; holds no state beyond its name. */
16964
+ class VectorCollection {
16965
+ http;
16966
+ name;
16967
+ base;
16968
+ constructor(http, name) {
16969
+ this.http = http;
16970
+ this.name = name;
16971
+ this.base = `/api/vectors/${encodeURIComponent(name)}`;
16972
+ }
16973
+ /** Add or replace entries. Returns once accepted; see {@link status}. */
16974
+ upsert(entries, opts) {
16975
+ const body = { entries };
16976
+ if (opts?.notify !== undefined)
16977
+ body.notify = opts.notify;
16978
+ return this.http.post(`${this.base}/upsert`, body);
16979
+ }
16980
+ /** Nearest entries to a text or a vector. */
16981
+ async query(input) {
16982
+ const res = await this.http.post(`${this.base}/query`, input);
16983
+ return res.matches;
16984
+ }
16985
+ /** Entries by id. Writes still pending are not returned. */
16986
+ async get(ids, opts) {
16987
+ const body = { ids };
16988
+ if (opts?.includeVector !== undefined)
16989
+ body.includeVector = opts.includeVector;
16990
+ const res = await this.http.post(`${this.base}/get`, body);
16991
+ return res.entries;
16992
+ }
16993
+ /** Remove entries by id. Asynchronous, like {@link upsert}. */
16994
+ delete(ids) {
16995
+ return this.http.post(`${this.base}/delete`, { ids });
16996
+ }
16997
+ /** The state of a write: `pending`, `done`, or `unknown` (never seen or expired). */
16998
+ async status(mutationId) {
16999
+ const res = await this.http.get(`${this.base}/status?mutation=${encodeURIComponent(mutationId)}`);
17000
+ return res.state;
17001
+ }
17002
+ /**
17003
+ * Listen on an open Space for this collection's ready notices. Only notices
17004
+ * the platform sent (sender `__muhkoo__`) reach `handler`; a member who
17005
+ * publishes the same subject is ignored. Needs an unlocked session, since a
17006
+ * Space without its keys emits no ephemeral events. Returns the unsubscribe.
17007
+ */
17008
+ onReady(space, handler) {
17009
+ return space.onEphemeral((e) => {
17010
+ if (e.from !== READY_SENDER || e.subject !== READY_SUBJECT)
17011
+ return;
17012
+ if (!isReadyEvent(e.data) || e.data.collection !== this.name)
17013
+ return;
17014
+ handler({ collection: e.data.collection, ids: e.data.ids, mutationId: e.data.mutationId });
17015
+ });
17016
+ }
17017
+ /**
17018
+ * Resolve once a write is searchable: on its ready notice (with `space`) or
17019
+ * when {@link status} answers `done`. Status is polled underneath either way,
17020
+ * because notices are best effort.
17021
+ *
17022
+ * The notice only arrives if `space` is a registered notice Space for the
17023
+ * environment (see {@link VectorsNamespace.setNotices}) and the write named
17024
+ * it in `notify.space` or it is the environment's `defaultSpace`. Any other
17025
+ * Space never receives the notice, and the wait falls back to polling,
17026
+ * usually finishing within a minute or two.
17027
+ *
17028
+ * Rejects with an `Error` ("Unknown mutation <id>") if status answers
17029
+ * `unknown`, and with {@link VectorWaitTimeoutError} after `timeoutMs`
17030
+ * (default 300,000 ms).
17031
+ */
17032
+ waitFor(mutationId, opts) {
17033
+ const space = opts?.space;
17034
+ const subscribe = space
17035
+ ? (onHit) => this.onReady(space, (e) => { if (e.mutationId === mutationId)
17036
+ onHit(); })
17037
+ : undefined;
17038
+ return this.wait(mutationId, opts, subscribe);
17039
+ }
17040
+ /**
17041
+ * {@link upsert}, then {@link waitFor} its mutation. With `space`, listens
17042
+ * before sending, so a notice that beats the HTTP response still counts.
17043
+ * The notice reaches `space` only if it is a registered notice Space named
17044
+ * in `notify.space` or set as the environment's `defaultSpace`; naming an
17045
+ * unregistered Space fails the upsert with a 400
17046
+ * `notice_space_not_registered`. Otherwise the wait completes by polling.
17047
+ * An upsert error is rethrown at once.
17048
+ */
17049
+ async upsertAndWait(entries, opts) {
17050
+ const space = opts?.space;
17051
+ if (!space) {
17052
+ const result = await this.upsert(entries, opts);
17053
+ await this.wait(result.mutationId, opts, undefined);
17054
+ return result;
17055
+ }
17056
+ const seen = new Set();
17057
+ let target = null;
17058
+ let hit = null;
17059
+ const unsubscribe = this.onReady(space, (e) => {
17060
+ if (target === null)
17061
+ seen.add(e.mutationId);
17062
+ else if (e.mutationId === target)
17063
+ hit?.();
17064
+ });
17065
+ try {
17066
+ const result = await this.upsert(entries, opts);
17067
+ target = result.mutationId;
17068
+ const already = seen.has(result.mutationId);
17069
+ seen.clear();
17070
+ const subscribe = (onHit) => {
17071
+ hit = onHit;
17072
+ return () => { hit = null; };
17073
+ };
17074
+ if (!already)
17075
+ await this.wait(result.mutationId, opts, subscribe);
17076
+ return result;
17077
+ }
17078
+ finally {
17079
+ unsubscribe();
17080
+ }
17081
+ }
17082
+ wait(mutationId, opts, subscribe) {
17083
+ const timeoutMs = opts?.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;
17084
+ const space = opts?.space;
17085
+ return new Promise((resolve, reject) => {
17086
+ let finished = false;
17087
+ let pollTimer;
17088
+ let backoff = POLL_FIRST_MS;
17089
+ const subscription = {};
17090
+ const finish = (err) => {
17091
+ if (finished)
17092
+ return;
17093
+ finished = true;
17094
+ clearTimeout(deadline);
17095
+ if (pollTimer !== undefined)
17096
+ clearTimeout(pollTimer);
17097
+ subscription.off?.();
17098
+ if (err)
17099
+ reject(err);
17100
+ else
17101
+ resolve();
17102
+ };
17103
+ const schedule = () => {
17104
+ if (finished)
17105
+ return;
17106
+ let delay;
17107
+ if (space?.isConnected()) {
17108
+ delay = POLL_CONNECTED_MS;
17109
+ }
17110
+ else {
17111
+ delay = backoff;
17112
+ backoff = Math.min(backoff * 2, POLL_MAX_MS);
17113
+ }
17114
+ pollTimer = setTimeout(poll, delay);
17115
+ };
17116
+ const poll = async () => {
17117
+ pollTimer = undefined;
17118
+ let state = null;
17119
+ try {
17120
+ state = await this.status(mutationId);
17121
+ }
17122
+ catch {
17123
+ state = null; // retried at the same cadence
17124
+ }
17125
+ if (finished)
17126
+ return;
17127
+ if (state === "done")
17128
+ finish();
17129
+ else if (state === "unknown")
17130
+ finish(new Error(`Unknown mutation ${mutationId}`));
17131
+ else
17132
+ schedule();
17133
+ };
17134
+ const deadline = setTimeout(() => finish(new VectorWaitTimeoutError(mutationId, timeoutMs)), timeoutMs);
17135
+ subscription.off = subscribe?.(() => finish());
17136
+ if (finished) {
17137
+ subscription.off?.();
17138
+ return;
17139
+ }
17140
+ schedule();
17141
+ });
17142
+ }
17143
+ }
17144
+ /** A collection's creation failed; `info.envs.*.error` says why. */
17145
+ class VectorCollectionFailedError extends Error {
17146
+ info;
17147
+ constructor(info) {
17148
+ const reason = info.envs?.live?.error ?? info.envs?.test?.error;
17149
+ super(`Collection ${info.name} failed${reason ? `: ${reason}` : ""}`);
17150
+ this.name = "VectorCollectionFailedError";
17151
+ this.info = info;
17152
+ }
17153
+ }
17154
+ const COLLECTION_POLL_MS = 2_000;
17155
+ const DEFAULT_COLLECTION_TIMEOUT_MS = 600_000;
17156
+ class VectorsNamespace {
17157
+ deps;
17158
+ constructor(deps) {
17159
+ this.deps = deps;
17160
+ }
17161
+ /** A handle on the named collection, made fresh on each call. */
17162
+ collection(name) {
17163
+ return new VectorCollection(this.deps.http, name);
17164
+ }
17165
+ // Owner management. Authorized by the developer session (owner only, like
17166
+ // the database tables API), not the app key.
17167
+ /** The app's collections, sorted by name. */
17168
+ async listCollections(appId) {
17169
+ const res = await this.deps.http.get(this.ownerPath(appId));
17170
+ return res.collections;
17171
+ }
17172
+ /** One collection. A missing or badly named one is 404 `collection_not_found`. */
17173
+ getCollection(appId, name) {
17174
+ return this.deps.http.get(this.ownerPath(appId, name));
17175
+ }
17176
+ /**
17177
+ * Create a collection. Asynchronous: it answers with status `creating`; use
17178
+ * {@link waitForCollection} to wait for `ready`. Repeating it with the same
17179
+ * definition returns the existing collection; a different definition is
17180
+ * 409 `collection_exists`. Definitions never change: drop and recreate.
17181
+ */
17182
+ createCollection(appId, name, definition) {
17183
+ return this.deps.http.put(this.ownerPath(appId, name), definition);
17184
+ }
17185
+ /**
17186
+ * Drop a collection and its entries in both environments. Asynchronous; the
17187
+ * collection shows status `dropping` until it is gone. Safe to repeat: a 503
17188
+ * `vectors_unavailable` means the drop couldn't start, and calling again is
17189
+ * the remedy.
17190
+ */
17191
+ async dropCollection(appId, name) {
17192
+ await this.deps.http.del(this.ownerPath(appId, name));
17193
+ }
17194
+ /** Set which Spaces receive ready notices for one environment. */
17195
+ setNotices(appId, name, env, notices) {
17196
+ return this.deps.http.patch(`${this.ownerPath(appId, name)}/notices?env=${encodeURIComponent(env)}`, notices);
17197
+ }
17198
+ /**
17199
+ * Poll {@link getCollection} every 2 s until status is `ready`. Rejects with
17200
+ * {@link VectorCollectionFailedError} on `failed`, and with
17201
+ * `Error("Timed out waiting for collection <name>")` after `timeoutMs`
17202
+ * (default 600,000 ms: creation waits for filter fields to settle).
17203
+ */
17204
+ waitForCollection(appId, name, opts) {
17205
+ const timeoutMs = opts?.timeoutMs ?? DEFAULT_COLLECTION_TIMEOUT_MS;
17206
+ return new Promise((resolve, reject) => {
17207
+ let finished = false;
17208
+ let pollTimer;
17209
+ const done = (fn) => {
17210
+ if (finished)
17211
+ return;
17212
+ finished = true;
17213
+ clearTimeout(deadline);
17214
+ if (pollTimer !== undefined)
17215
+ clearTimeout(pollTimer);
17216
+ fn();
17217
+ };
17218
+ const poll = async () => {
17219
+ pollTimer = undefined;
17220
+ let info;
17221
+ try {
17222
+ info = await this.getCollection(appId, name);
17223
+ }
17224
+ catch (err) {
17225
+ done(() => reject(err));
17226
+ return;
17227
+ }
17228
+ if (finished)
17229
+ return;
17230
+ if (info.status === "ready")
17231
+ done(() => resolve(info));
17232
+ else if (info.status === "failed")
17233
+ done(() => reject(new VectorCollectionFailedError(info)));
17234
+ else
17235
+ pollTimer = setTimeout(poll, COLLECTION_POLL_MS);
17236
+ };
17237
+ const deadline = setTimeout(() => done(() => reject(new Error(`Timed out waiting for collection ${name}`))), timeoutMs);
17238
+ void poll();
17239
+ });
17240
+ }
17241
+ ownerPath(appId, name) {
17242
+ const base = `/api/apps/${encodeURIComponent(appId)}/vectors/collections`;
17243
+ return name === undefined ? base : `${base}/${encodeURIComponent(name)}`;
17244
+ }
17245
+ }
17246
+
16907
17247
  /**
16908
17248
  * POST /api/auth/identity (SpecA §4.1 as amended by CS-7). An unknown name
16909
17249
  * answers a deterministic decoy, so a lookup never says whether an account
@@ -24799,6 +25139,8 @@ class Client {
24799
25139
  accessTokens;
24800
25140
  /** This app — `client.app.access()`: may the signed-in user add data here? */
24801
25141
  app;
25142
+ /** Vector search — `client.vectors.collection("docs").query({ text })`, plus owner management of collections. */
25143
+ vectors;
24802
25144
  /** Offline cache + sync — `client.offline.status`, `client.offline.snapshot`, etc. */
24803
25145
  offline;
24804
25146
  session;
@@ -25071,6 +25413,7 @@ class Client {
25071
25413
  this.agents = new AgentsNamespace({ http: this.http });
25072
25414
  this.functions = new FunctionsNamespace({ http: this.http, fnHostSuffix: options.functionsHostSuffix });
25073
25415
  this.accessTokens = new AccessTokensNamespace({ http: this.http });
25416
+ this.vectors = new VectorsNamespace({ http: this.http });
25074
25417
  // Each "allowed" sends what the offline queue kept after a refusal for
25075
25418
  // payment, without waiting for the next reconnect.
25076
25419
  this.app = new AppNamespace({ http: this.http, onAllowed: () => this.offline.resume() });
@@ -25494,5 +25837,5 @@ var bundledLoader = /*#__PURE__*/Object.freeze({
25494
25837
  default: loadRsWasm
25495
25838
  });
25496
25839
 
25497
- export { ACCESS_TOKEN_SCOPES, AES_GCM_IV_BYTES$1 as AES_GCM_IV_BYTES, AES_GCM_KEY_BYTES, AES_GCM_TAG_BYTES$1 as AES_GCM_TAG_BYTES, AccessTokensNamespace, AdmissionDeniedError, AgentsNamespace, AppNamespace, AuthClient, AuthHttpError, AuthNamespace, AuthPublicInput, Authenticator, BlockEngine, BroadcastChannel, BroadcastChannelEvents, ChannelExistsError, ChannelNotFoundError, ChunkCipher, CircuitIntegrityError, Client, ConnectivityManager, DEFAULT_AUTH_BASE_URL, DEFAULT_BASE_URL, DEFAULT_BRANCH, DEFAULT_FN_HOST_SUFFIX, DEVICE_IDENTITY_STORAGE_KEY, DEVICE_KEY_DB_NAME, DbCache, DbNamespace, DbTable, DevicePairingError, DeviceRevokedError, DeviceStoreUnavailableError, DoubleRatchet, DoubleRatchetCipher, DoubleRatchetManager, EncryptedSession, EventCore, EventCoreEvents, Field, Field as FieldElement, FileStorage, FunctionsNamespace, GoogleNotLinkedError, GuestLoginConflictError, HLC, HashKnowledge, HostedAuth, HttpClient, HttpError, IdentityLockedError, IdentityUnavailableError, IndexedDbStore, InvalidRecoveryCodeError, KEEPER_MEMBER_ID$1 as KEEPER_MEMBER_ID, KeyStore, KeyringClient, KeyringHttpError, KvCache, KvNamespace, LocalEngineHost, LocalStorageSessionStore, Logger, MAX_SHARE_SUCCESSOR_HOPS, MemorySessionStore, Message, Message as MessageDefault, MessageNamespace, MuhkooAgent, MuhkooDB, MuhkooFunction, MuhkooSpace, NOT_MEMBER_CLOSE_CODE, NOT_MEMBER_RECHECK_MS, NoopStore, OfflineLockedError, OfflineManager, OutboundQueue, P2P_SUBJECT, PAIRING_CODE_ALPHABET, PAIRING_CODE_LENGTH, PBKDF2_DEFAULT_ITERATIONS, PINNED_CIRCUIT_DIGESTS, PREIMAGE_POK_VERIFICATION_KEY, Packet, PasskeyOriginError, PaymentRequiredError, PeerExchange, PeerNetwork, PersonalSpaceClient, Poseidon, PreimagePoK, ROOT_ID, Ready, ReauthRequiredError, ReedSolomonCodec, Repo, Retry, Space as Room, RotationInProgressError, RotationIncompleteError, RotationMismatchError, SHARE_DIR_TYPE, SHARE_GUEST_DEVICE_LABEL, SHARE_PASSWORD_ITERATIONS, SerializeMessage, SessionState, ShardCache, ShardClient, Share, ShareClosedError, ShareFullError, ShareMemberLimitError, SharePasswordError, SharePasswordRateError, ShareSpaceNotEmptyError, ShareSpaceNotReadyError, SharedSpaceClient, SharesClient, SharesNamespace, SnapshotNamespace, Space, SpaceCache, SpaceKeyring, SpaceNamespace, SpacePacketCipher, SpaceSignaler, SpaceTrustError, StorageNamespace, SyncEngine, VERSION, VFS_ROOT_INFO, VaultProtocolMismatchError, VaultUnavailableError, VcsError, VcsNamespace, VfsConflictError, VfsCorruptRecordError, VfsLimitError, VfsLockedError, VfsNamespace, VfsNotFoundError, WSTransport, WebRtcTransport, WorkerEngineHost, ZERO_HLC, ZkAuth, _accountId, _formatBytes, _messageId, _objectId, _packetId, _socketId, _userId, appLogger$1 as appLogger, assertType, base58Decode, base58Encode, buildCommitment, canonicalUserCode, clearDeviceIdentity, compareHlc, compilePrograms, concatBytes$1 as concatBytes, configureDeviceStore, createPasskeyWithPrf, decodeFromHex, decorators, decryptAesGcm, defaultCircuitUrls, defaultRpId, defaultSessionStore, defaultSharesStore, deleteBeatsWrite, deleteRegister, deriveAesKeyFromPassphrase, deriveBitsHkdf, deriveIdentity, deriveIdentityFromSeed, deriveMasterSeedFromPassword, deserialize, deviceFingerprint, deviceIdentityIsEphemeral, deviceIdentityKey, dirKey, ejectAgentPrompt, ejectAgentTools, emptyMap, emptyRegister, encodeToHex, encryptAesGcm, evaluatePasskeyPrf, exportPublicKeyBase64, exportPublicKeyHex, formatUserCode, fromBase64$2 as fromBase64, fromBase64Url, fromHex, generateAuthProof, generateChecksum, generateDevicePairingKeypair, generateId, generatePkce, getIPAddress, getId, getMuhkooAppDescriptor, getSubtle, guestRecoveryCode, guestRecoveryOf, hasDeviceIdentity, headKey, historyKey, initBn128Wasm, initRsWasm, initializeCircuits, isNewer, isNumber, isOfflineCapable, isP2pCapable, isProvisional, isSameOriginPath, loadDeviceIdentity, log, manifestToStat, materializeRow, memorySharesStore, merge3, merge3Text, mergeKey, mergeMap, mergeMessage, mergeRegister, messageKey, newPasswordVerifier, objectKey, pack, padHandle, pairingVerificationCode, parseGuestRecoveryCode, passkeyPrfCapable, passkeySupported, passkeyUsableFromOrigin, passwordProof, persistDeviceIdentity, poseidonHash, protocol, provisionalHandle, quickVerify, randomBytes, randomState, refKey, refsIndexKey, rpIdUsableForOrigin, sealSeed, sealSeedToDevice, serialize, shardHash, shareErrorFrom, signMessage, stableStringify, toBase64$2 as toBase64, toBase64Url, toField, toHex, tombstoneRow, unpack, unsealSeed, unsealSeedFromDevice, unwrapWithPassphrase, utf8Decode, utf8Encode, verify, verifyChecksum, verifyGroth16, verifyHashKnowledge, verifyPreimagePoK, wrapWithPassphrase, writeBeatsTombstone, writeColumns, writeRegister };
25840
+ export { ACCESS_TOKEN_SCOPES, AES_GCM_IV_BYTES$1 as AES_GCM_IV_BYTES, AES_GCM_KEY_BYTES, AES_GCM_TAG_BYTES$1 as AES_GCM_TAG_BYTES, AccessTokensNamespace, AdmissionDeniedError, AgentsNamespace, AppNamespace, AuthClient, AuthHttpError, AuthNamespace, AuthPublicInput, Authenticator, BlockEngine, BroadcastChannel, BroadcastChannelEvents, ChannelExistsError, ChannelNotFoundError, ChunkCipher, CircuitIntegrityError, Client, ConnectivityManager, DEFAULT_AUTH_BASE_URL, DEFAULT_BASE_URL, DEFAULT_BRANCH, DEFAULT_FN_HOST_SUFFIX, DEVICE_IDENTITY_STORAGE_KEY, DEVICE_KEY_DB_NAME, DbCache, DbNamespace, DbTable, DevicePairingError, DeviceRevokedError, DeviceStoreUnavailableError, DoubleRatchet, DoubleRatchetCipher, DoubleRatchetManager, EncryptedSession, EventCore, EventCoreEvents, Field, Field as FieldElement, FileStorage, FunctionsNamespace, GoogleNotLinkedError, GuestLoginConflictError, HLC, HashKnowledge, HostedAuth, HttpClient, HttpError, IdentityLockedError, IdentityUnavailableError, IndexedDbStore, InvalidRecoveryCodeError, KEEPER_MEMBER_ID$1 as KEEPER_MEMBER_ID, KeyStore, KeyringClient, KeyringHttpError, KvCache, KvNamespace, LocalEngineHost, LocalStorageSessionStore, Logger, MAX_SHARE_SUCCESSOR_HOPS, MemorySessionStore, Message, Message as MessageDefault, MessageNamespace, MuhkooAgent, MuhkooDB, MuhkooFunction, MuhkooSpace, NOT_MEMBER_CLOSE_CODE, NOT_MEMBER_RECHECK_MS, NoopStore, OfflineLockedError, OfflineManager, OutboundQueue, P2P_SUBJECT, PAIRING_CODE_ALPHABET, PAIRING_CODE_LENGTH, PBKDF2_DEFAULT_ITERATIONS, PINNED_CIRCUIT_DIGESTS, PREIMAGE_POK_VERIFICATION_KEY, Packet, PasskeyOriginError, PaymentRequiredError, PeerExchange, PeerNetwork, PersonalSpaceClient, Poseidon, PreimagePoK, ROOT_ID, Ready, ReauthRequiredError, ReedSolomonCodec, Repo, Retry, Space as Room, RotationInProgressError, RotationIncompleteError, RotationMismatchError, SHARE_DIR_TYPE, SHARE_GUEST_DEVICE_LABEL, SHARE_PASSWORD_ITERATIONS, SerializeMessage, SessionState, ShardCache, ShardClient, Share, ShareClosedError, ShareFullError, ShareMemberLimitError, SharePasswordError, SharePasswordRateError, ShareSpaceNotEmptyError, ShareSpaceNotReadyError, SharedSpaceClient, SharesClient, SharesNamespace, SnapshotNamespace, Space, SpaceCache, SpaceKeyring, SpaceNamespace, SpacePacketCipher, SpaceSignaler, SpaceTrustError, StorageNamespace, SyncEngine, VERSION, VFS_ROOT_INFO, VaultProtocolMismatchError, VaultUnavailableError, VcsError, VcsNamespace, VectorCollection, VectorCollectionFailedError, VectorWaitTimeoutError, VectorsNamespace, VfsConflictError, VfsCorruptRecordError, VfsLimitError, VfsLockedError, VfsNamespace, VfsNotFoundError, WSTransport, WebRtcTransport, WorkerEngineHost, ZERO_HLC, ZkAuth, _accountId, _formatBytes, _messageId, _objectId, _packetId, _socketId, _userId, appLogger$1 as appLogger, assertType, base58Decode, base58Encode, buildCommitment, canonicalUserCode, clearDeviceIdentity, compareHlc, compilePrograms, concatBytes$1 as concatBytes, configureDeviceStore, createPasskeyWithPrf, decodeFromHex, decorators, decryptAesGcm, defaultCircuitUrls, defaultRpId, defaultSessionStore, defaultSharesStore, deleteBeatsWrite, deleteRegister, deriveAesKeyFromPassphrase, deriveBitsHkdf, deriveIdentity, deriveIdentityFromSeed, deriveMasterSeedFromPassword, deserialize, deviceFingerprint, deviceIdentityIsEphemeral, deviceIdentityKey, dirKey, ejectAgentPrompt, ejectAgentTools, emptyMap, emptyRegister, encodeToHex, encryptAesGcm, evaluatePasskeyPrf, exportPublicKeyBase64, exportPublicKeyHex, formatUserCode, fromBase64$2 as fromBase64, fromBase64Url, fromHex, generateAuthProof, generateChecksum, generateDevicePairingKeypair, generateId, generatePkce, getIPAddress, getId, getMuhkooAppDescriptor, getSubtle, guestRecoveryCode, guestRecoveryOf, hasDeviceIdentity, headKey, historyKey, initBn128Wasm, initRsWasm, initializeCircuits, isNewer, isNumber, isOfflineCapable, isP2pCapable, isProvisional, isSameOriginPath, loadDeviceIdentity, log, manifestToStat, materializeRow, memorySharesStore, merge3, merge3Text, mergeKey, mergeMap, mergeMessage, mergeRegister, messageKey, newPasswordVerifier, objectKey, pack, padHandle, pairingVerificationCode, parseGuestRecoveryCode, passkeyPrfCapable, passkeySupported, passkeyUsableFromOrigin, passwordProof, persistDeviceIdentity, poseidonHash, protocol, provisionalHandle, quickVerify, randomBytes, randomState, refKey, refsIndexKey, rpIdUsableForOrigin, sealSeed, sealSeedToDevice, serialize, shardHash, shareErrorFrom, signMessage, stableStringify, toBase64$2 as toBase64, toBase64Url, toField, toHex, tombstoneRow, unpack, unsealSeed, unsealSeedFromDevice, unwrapWithPassphrase, utf8Decode, utf8Encode, verify, verifyChecksum, verifyGroth16, verifyHashKnowledge, verifyPreimagePoK, wrapWithPassphrase, writeBeatsTombstone, writeColumns, writeRegister };
25498
25841
  //# sourceMappingURL=index.js.map