@agentvault/grok-bridge 0.4.20 → 0.4.22

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.
Files changed (2) hide show
  1. package/dist/index.js +349 -59
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -11712,11 +11712,11 @@ async function joinWithFirstMatchingKp(welcomeBytes, candidates) {
11712
11712
  return null;
11713
11713
  }
11714
11714
  function ownIdentity() {
11715
- const v2 = true ? "0.23.49" : FALLBACK;
11715
+ const v2 = true ? "0.23.51" : FALLBACK;
11716
11716
  return `${PACKAGE}@${v2}`;
11717
11717
  }
11718
11718
  function buildSha() {
11719
- const raw = true ? "c98737d" : "";
11719
+ const raw = true ? "753de79" : "";
11720
11720
  const cleaned = (raw ?? "").trim();
11721
11721
  return !cleaned || cleaned === "unknown" ? null : cleaned;
11722
11722
  }
@@ -12891,14 +12891,27 @@ function migrateHistoryEntries(history) {
12891
12891
  return { id, ...legacyEntry };
12892
12892
  });
12893
12893
  }
12894
+ function isTopicId(value) {
12895
+ return typeof value === "string" && TOPIC_ID_RE.test(value);
12896
+ }
12897
+ function migrateDefaultTopics(state) {
12898
+ if (!state.defaultTopicId || !state.groupId) return state;
12899
+ if (state.defaultTopicIds?.[state.groupId]) return state;
12900
+ return {
12901
+ ...state,
12902
+ defaultTopicIds: { ...state.defaultTopicIds ?? {}, [state.groupId]: state.defaultTopicId }
12903
+ };
12904
+ }
12894
12905
  function migratePersistedState(raw) {
12895
12906
  if (raw.sessions && raw.primaryConversationId) {
12896
12907
  const history = raw.messageHistory;
12897
- if (!history?.some((entry) => typeof entry.id !== "string")) return raw;
12898
- return {
12908
+ if (!history?.some((entry) => typeof entry.id !== "string")) {
12909
+ return migrateDefaultTopics(raw);
12910
+ }
12911
+ return migrateDefaultTopics({
12899
12912
  ...raw,
12900
12913
  messageHistory: migrateHistoryEntries(history)
12901
- };
12914
+ });
12902
12915
  }
12903
12916
  const legacy = raw;
12904
12917
  return {
@@ -17630,7 +17643,7 @@ function armSseKeepAlive(intervalMs, onTick) {
17630
17643
  timer.unref?.();
17631
17644
  return timer;
17632
17645
  }
17633
- var __create, __defProp2, __getOwnPropDesc, __getOwnPropNames2, __getProtoOf, __hasOwnProp, __esm2, __commonJS, __export2, __copyProps, __toESM, SENTINEL, WRAPPERS, INSTRUCTION, init_abstention, init_envelope_text, init_mls_commit_classify, MENTION_RE, BROADCAST_NAMES, init_room_protocol, __filename, __dirname, url, path, Module, Module, root, window_, crypto_, randomValuesStandard, crypto2, randomValueNodeJS, _Module, libsodium_sumo_default, init_libsodium_sumo, a, r, t, c, libsodium_wrappers_default, init_libsodium_wrappers, init_keys, init_x3dh, MAX_SKIP, CHAIN_KEY_SEED, MSG_KEY_SEED, HEADER_KEY_SEED, DoubleRatchet, init_ratchet, init_file_crypto, DOMAIN_DID_DOCUMENT, DOMAIN_TRANSFER_INTENT, DOMAIN_TRANSFER_ACCEPT, BASE58_ALPHABET, init_did, BUILTIN_PATTERNS, ScanEngine, init_scan_engine, init_merkle, VC_CONTEXT_V2, AV_CREDENTIAL_CONTEXT, CRYPTOSUITE, BASE58_ALPHABET2, init_vc, init_transport, init_telemetry, TelemetryReporter, init_telemetry_reporter, CROCKFORD, ARGON2_OPSLIMIT, ARGON2_MEMLIMIT, SALT_BYTES, NONCE_BYTES, KEY_BYTES, BACKUP_VERSION, MAX_BACKUP_SIZE, init_backup, atitle, aobject, aopts, isLE, swap8IfBE, swap32IfBE, hasHexBuiltin, hexes, oidNist, init_utils, BSIGMA, init_blake, U32_MASK64, _32n, fromNumH, fromNumL, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, add3L, add3H, add4L, add4H, add5L, add5H, init_u64, HashMD, SHA256_IV, SHA384_IV, SHA512_IV, init_md, B2B_IV, BBUF, _BLAKE2, _BLAKE2b, blake2b, init_blake2, CROCKFORD2, SALT_BYTES2, NONCE_BYTES2, KEY_BYTES2, TAG_BYTES, ENVELOPE_OVERHEAD, AAD_PREFIX, UUID_RE, UUID_V4_RE, DIGEST_ID_RE, TIMESTAMP_RE, encoder, decoder, HISTORY_MAGIC, HISTORY_ARCHIVE_VERSION, HISTORY_MAX_ENTRIES, HISTORY_MAX_BLOB_BYTES, HISTORY_KDF_OPSLIMIT, HISTORY_KDF_MEMLIMIT, HistoryEntryTooLargeError, init_history_backup, init_approval, encVoid, init_tlsEncoder, uint8Encoder, encodeUint8, decodeUint8, uint16Encoder, encodeUint16, decodeUint16, uint32Encoder, encodeUint32, decodeUint32, uint64Encoder, encodeUint64, decodeUint64, init_number, init_tlsDecoder, init_enumHelpers, defaultProposalTypes, defaultProposalTypeEncoder, encodeDefaultProposalType, decodeDefaultProposalType, init_defaultProposalType, defaultExtensionTypes, defaultExtensionTypeEncoder, encodeDefaultExtensionType, decodeDefaultExtensionType, init_defaultExtensionType, acceptAll, init_incomingMessageAction, MlsError, ValidationError, CodecError, UsageError, DependencyError, CryptoVerificationError, CryptoError, InternalError, init_mlsError, init_byteArray, varLenDataEncoder, decodeVarLenData, init_variableLength, init_constantTimeCompare, extensionTypeEncoder, encodeExtensionType, decodeExtensionType, extensionEncoder, encodeExtension, decodeExtension, init_extension, credentialTypes, credentialTypeEncoder, encodeCredentialType, decodeCredentialType, init_credentialType, credentialBasicEncoder, encodeCredentialBasic, credentialX509Encoder, encodeCredentialX509, credentialCustomEncoder, encodeCredentialCustom, credentialEncoder, encodeCredential, decodeCredentialBasic, decodeCredentialX509, decodeCredential, init_credential, externalSenderEncoder, encodeExternalSender, decodeExternalSender, init_externalSender, init_hash, init_optional, ciphersuites, ciphersuiteEncoder, encodeCiphersuite, decodeCiphersuite, ciphersuiteValues, init_ciphersuite, init_signature, protocolVersions, protocolVersionEncoder, encodeProtocolVersion, decodeProtocolVersion, init_protocolVersion, capabilitiesEncoder, encodeCapabilities, decodeCapabilities, init_capabilities, leafNodeSources, leafNodeSourceEncoder, encodeLeafNodeSource, decodeLeafNodeSource, init_leafNodeSource, lifetimeEncoder, encodeLifetime, decodeLifetime, defaultLifetime, init_lifetime, leafNodeDataEncoder, encodeLeafNodeData, decodeLeafNodeData, leafNodeInfoKeyPackageEncoder, encodeLeafNodeInfoKeyPackage, leafNodeInfoUpdateOmittedEncoder, encodeLeafNodeInfoUpdateOmitted, leafNodeInfoCommitOmittedEncoder, encodeLeafNodeInfoCommitOmitted, leafNodeInfoOmittedEncoder, encodeLeafNodeInfoOmitted, decodeLeafNodeInfoKeyPackage, decodeLeafNodeInfoUpdateOmitted, decodeLeafNodeInfoCommitOmitted, decodeLeafNodeInfoOmitted, leafNodeInfoUpdateEncoder, encodeLeafNodeInfoUpdate, leafNodeInfoCommitEncoder, encodeLeafNodeInfoCommit, leafNodeInfoEncoder, encodeLeafNodeInfo, decodeLeafNodeInfoUpdate, decodeLeafNodeInfoCommit, decodeLeafNodeInfo, leafNodeTBSEncoder, encodeLeafNodeTBS, leafNodeEncoder, encodeLeafNode, decodeLeafNode, decodeLeafNodeKeyPackage, decodeLeafNodeCommit, decodeLeafNodeUpdate, init_leafNode, keyPackageTBSEncoder, encodeKeyPackageTBS, decodeKeyPackageTBS, keyPackageEncoder, encodeKeyPackage, decodeKeyPackage, init_keyPackage, init_kdf, pskTypes, pskTypeEncoder, encodePskType, decodePskType, resumptionPSKUsages, resumptionPSKUsageEncoder, encodeResumptionPSKUsage, decodeResumptionPSKUsage, encodePskInfoExternal, encodePskInfoResumption, decodePskInfoResumption, pskInfoEncoder, encodePskInfo, decodePskInfo, pskIdEncoder, encodePskId, decodePskId, pskLabelEncoder, encodePskLabel, decodePskLabel, init_presharedkey, addEncoder, encodeAdd, decodeAdd, updateEncoder, encodeUpdate, decodeUpdate, removeEncoder, encodeRemove, decodeRemove, pskEncoder, encodePSK, decodePSK, reinitEncoder, encodeReinit, decodeReinit, externalInitEncoder, encodeExternalInit, decodeExternalInit, groupContextExtensionsEncoder, encodeGroupContextExtensions, decodeGroupContextExtensions, proposalAddEncoder, encodeProposalAdd, proposalUpdateEncoder, encodeProposalUpdate, proposalRemoveEncoder, encodeProposalRemove, proposalPSKEncoder, encodeProposalPSK, proposalReinitEncoder, encodeProposalReinit, proposalExternalInitEncoder, encodeProposalExternalInit, proposalGroupContextExtensionsEncoder, encodeProposalGroupContextExtensions, proposalCustomEncoder, encodeProposalCustom, proposalEncoder, encodeProposal, decodeProposalAdd, decodeProposalUpdate, decodeProposalRemove, decodeProposalPSK, decodeProposalReinit, decodeProposalExternalInit, decodeProposalGroupContextExtensions, decodeProposal, init_proposal, proposalOrRefTypes, proposalOrRefTypeEncoder, encodeProposalOrRefType, decodeProposalOrRefType, proposalOrRefProposalEncoder, encodeProposalOrRefProposal, proposalOrRefProposalRefEncoder, encodeProposalOrRefProposalRef, proposalOrRefEncoder, encodeProposalOrRef, decodeProposalOrRef, init_proposalOrRefType, init_hpke, groupContextEncoder, encodeGroupContext, decodeGroupContext, init_groupContext, nodeTypes, nodeTypeEncoder, encodeNodeType, decodeNodeType, init_nodeType, parentNodeEncoder, encodeParentNode, decodeParentNode, init_parentNode, init_treemath, nodeEncoder, encodeNode, decodeNode, ratchetTreeEncoder, encodeRatchetTree, decodeRatchetTree, init_ratchetTree, leafNodeHashInputEncoder, encodeLeafNodeHashInput, decodeLeafNodeHashInput, parentNodeHashInputEncoder, encodeParentNodeHashInput, decodeParentNodeHashInput, treeHashInputEncoder, encodeTreeHashInput, decodeTreeHashInput, init_treeHash, parentHashInputEncoder, encodeParentHashInput, decodeParentHashInput, init_parentHash, hpkeCiphertextEncoder, encodeHpkeCiphertext, decodeHpkeCiphertext, init_hpkeCiphertext, updatePathNodeEncoder, encodeUpdatePathNode, decodeUpdatePathNode, updatePathEncoder, encodeUpdatePath, decodeUpdatePath, init_updatePath, commitEncoder, encodeCommit, decodeCommit, init_commit, contentTypes, contentTypeEncoder, encodeContentType, decodeContentType, init_contentType, wireformats, wireformatEncoder, encodeWireformat, decodeWireformat, init_wireformat, senderTypes, senderTypeEncoder, encodeSenderType, decodeSenderType, senderEncoder, encodeSender, decodeSender, reuseGuardEncoder, encodeReuseGuard, decodeReuseGuard, senderDataEncoder, encodeSenderData, decodeSenderData, senderDataAADEncoder, encodeSenderDataAAD, decodeSenderDataAAD, init_sender, framedContentApplicationDataEncoder, encodeFramedContentApplicationData, framedContentProposalDataEncoder, encodeFramedContentProposalData, framedContentCommitDataEncoder, encodeFramedContentCommitData, framedContentInfoEncoder, encodeFramedContentInfo, decodeFramedContentApplicationData, decodeFramedContentProposalData, decodeFramedContentCommitData, decodeFramedContentInfo, framedContentEncoder, encodeFramedContent, decodeFramedContent, senderInfoEncoder, encodeSenderInfo, framedContentTBSEncoder, encodeFramedContentTBS, encodeFramedContentAuthDataContent, encodeFramedContentAuthDataCommit, framedContentAuthDataEncoder, encodeFramedContentAuthData, decodeFramedContentAuthDataCommit, init_framedContent, authenticatedContentEncoder, encodeAuthenticatedContent, decodeAuthenticatedContent, authenticatedContentTBMEncoder, encodeAuthenticatedContentTBM, init_authenticatedContent, publicMessageInfoEncoder, encodePublicMessageInfo, publicMessageEncoder, encodePublicMessage, decodePublicMessage, init_publicMessage, init_messageProtectionPublic, init_externalProposal, requiredCapabilitiesEncoder, encodeRequiredCapabilities, decodeRequiredCapabilities, init_requiredCapabilities, defaultAuthenticationService, init_authenticationService, defaultPaddingConfig, init_paddingConfig, defaultKeyPackageEqualityConfig, init_keyPackageEqualityConfig, defaultLifetimeConfig, init_lifetimeConfig, defaultKeyRetentionConfig, init_keyRetentionConfig, groupInfoTBSEncoder, encodeGroupInfoTBS, decodeGroupInfoTBS, groupInfoEncoder, encodeGroupInfo, decodeGroupInfo, init_groupInfo, keyScheduleEncoder, encodeKeySchedule, decodeKeySchedule, init_keySchedule, generationSecretEncoder, decodeGenerationSecret, secretTreeNodeEncoder, decodeSecretTreeNode, secretTreeEncoder, decodeSecretTree, init_secretTree, confirmedTranscriptHashInputEncoder, encodeConfirmedTranscriptHashInput, decodeConfirmedTranscriptHashInput, init_transcriptHash, groupSecretsEncoder, encodeGroupSecrets, decodeGroupSecrets, init_groupSecrets, encryptedGroupSecretsEncoder, encodeEncryptedGroupSecrets, decodeEncryptedGroupSecrets, welcomeEncoder, encodeWelcome, decodeWelcome, init_welcome, init_pathSecrets, privateKeyPathEncoder, decodePrivateKeyPath, init_privateKeyPath, proposalWithSenderEncoder, decodeProposalWithSender, unappliedProposalsEncoder, decodeUnappliedProposals, init_unappliedProposals, emptyPskIndex, init_pskIndex, init_addToMap, defaultClientConfig, init_clientConfig, init_array, stringEncoder, encodeString, decodeString, init_string, activeEncoder, suspendedPendingReinitEncoder, removedFromGroupEncoder, groupActiveStateEncoder, decodeGroupActiveState, init_groupActiveState, epochReceiverDataEncoder, decodeEpochReceiverData, init_epochReceiverData, groupStateEncoder, encodeGroupState, decodeGroupState, groupStateEncoderWithoutTree, encodeGroupStateWithoutTree, emptyProposals, init_clientState, privateMessageEncoder, encodePrivateMessage, decodePrivateMessage, privateContentAADEncoder, encodePrivateContentAAD, decodePrivateContentAAD, init_privateMessage, init_messageProtection, init_createMessage, init_createCommit, init_processMessages, init_makeHashImpl, HpkeError, InvalidParamError, SerializeError, DeserializeError, EncapError, DecapError, ExportError, SealError, OpenError, MessageLimitReachedError, DeriveKeyPairError, NotSupportedError, init_errors, dntGlobals, dntGlobalThis, init_dnt_shims, NativeAlgorithm, init_algorithm, Mode, KemId, KdfId, AeadId, init_identifiers, INPUT_LENGTH_LIMIT, INFO_LENGTH_LIMIT, MINIMUM_PSK_LENGTH, EMPTY, BYTE_TO_BIGINT_256, init_consts, SUITE_ID_HEADER_KEM, init_kemInterface, HPKE_VERSION, HkdfNative, HkdfSha256Native, HkdfSha384Native, HkdfSha512Native, init_hkdf, isCryptoKeyPair, init_misc, LABEL_EAE_PRK, LABEL_SHARED_SECRET, Dhkem, init_dhkem, KEM_USAGES, LABEL_DKP_PRK, LABEL_SK, init_dhkemPrimitives, Bignum, init_bignum, LABEL_CANDIDATE, ORDER_P_256, ORDER_P_384, ORDER_P_521, PKCS8_ALG_ID_P_256, PKCS8_ALG_ID_P_384, PKCS8_ALG_ID_P_521, EC_P_256_PARAMS, EC_P_384_PARAMS, EC_P_521_PARAMS, Ec, init_ec, init_xCryptoKey, init_xCurve, init_hybridkem, AEAD_USAGES, init_aeadEncryptionContext, _endianTestBuffer, _endianTestBytes, isLE2, init_noble, init_hash2, _HMAC, hmac, init_hmac, init_md2, U32_MASK642, _32n2, init_u642, init_sha2, _0n, _1n, _2n, _7n, _256n, _0x71n, SHA3_PI, SHA3_ROTL, _SHA3_IOTA, IOTAS, SHA3_IOTA_H, SHA3_IOTA_L, init_sha3, init_modular, init_curve, init_montgomery, init_mod, AesGcmContext, Aes128Gcm, Aes256Gcm, init_aesGcm, init_exportOnly, init_emitNotSupported, LABEL_SEC, ExporterContextImpl, RecipientExporterContextImpl, SenderExporterContextImpl, init_exporterContext, EncryptionContextImpl, init_encryptionContext, __classPrivateFieldGet, __classPrivateFieldSet, _Mutex_locked, Mutex, init_mutex, __classPrivateFieldGet2, __classPrivateFieldSet2, _RecipientContextImpl_mutex, RecipientContextImpl, init_recipientContext, __classPrivateFieldGet3, __classPrivateFieldSet3, _SenderContextImpl_mutex, SenderContextImpl, init_senderContext, LABEL_BASE_NONCE, LABEL_EXP, LABEL_INFO_HASH, LABEL_KEY, LABEL_PSK_ID_HASH, LABEL_SECRET, SUITE_ID_HEADER_HPKE, CipherSuiteNative, init_cipherSuiteNative, DhkemP256HkdfSha256Native, DhkemP384HkdfSha384Native, DhkemP521HkdfSha512Native, init_dhkemNative, CipherSuite, DhkemP256HkdfSha256, DhkemP384HkdfSha384, DhkemP521HkdfSha512, HkdfSha256, HkdfSha384, HkdfSha512, init_native, ALG_NAME, PKCS8_ALG_ID_X25519, BASE_POINT_X25519, X25519, init_x25519, DhkemX25519HkdfSha256, init_dhkemX25519, PKCS8_ALG_ID_X448, init_x448, init_dhkemX448, init_mod2, init_hpke2, isLE3, wrapCipher, init_utils2, encodeStr, sigma16, sigma32, sigma16_32, sigma32_32, BLOCK_LEN, BLOCK_LEN32, MAX_COUNTER, U32_EMPTY, _XorStreamPRG, createPRG, init_arx, Poly1305, poly1305, init_poly1305, chacha_exports, chacha20orig, chacha20, xchacha20, chacha8, chacha12, ZEROS16, updatePadded, ZEROS32, _poly1305_aead, chacha20poly1305, xchacha20poly1305, rngChacha20, rngChacha8, init_chacha, init_makeAead, init_makeKdfImpl, init_makeDhKem, init_makeHpke, defaultRng, init_rng, crypto3, init_cryptoNode, isLE4, swap32IfBE3, hasHexBuiltin2, hexes2, asciis, Hash, init_utils3, HashMD3, SHA256_IV3, SHA384_IV3, SHA512_IV3, init_md3, U32_MASK643, _32n3, shrSH3, shrSL3, rotrSH3, rotrSL3, rotrBH3, rotrBL3, rotlSH2, rotlSL2, rotlBH2, rotlBL2, add3L3, add3H3, add4L3, add4H3, add5L3, add5H3, init_u643, SHA256_K, SHA256_W, SHA256, K512, SHA512_Kh, SHA512_Kl, SHA512_W_H, SHA512_W_L, SHA512, SHA384, sha2563, sha5122, sha3842, init_sha22, _0n2, _1n2, isPosBig, bitMask, notImplemented, init_utils4, _0n3, _1n3, _2n2, _3n, _4n, _5n, _7n2, _8n, _9n, _16n, isNegativeLE, FIELD_FIELDS, init_modular2, _0n4, _1n4, pointPrecomputes, pointWindowSizes, wNAF, init_curve2, _0n5, _1n5, _2n3, _8n2, PrimeEdwardsPoint, init_edwards, os2ip, _DST_scalar, init_hash_to_curve, _0n6, _1n6, _2n4, init_montgomery2, ed25519_exports, _0n7, _1n7, _2n5, _3n2, _5n2, _8n3, ed25519_CURVE_p, ed25519_CURVE, ED25519_SQRT_M1, Fp, Fn, ed25519Defaults, ed25519, ed25519ctx, ed25519ph, x25519, ELL2_C1, ELL2_C2, ELL2_C3, ELL2_C1_EDWARDS, ed25519_hasher, SQRT_M1, SQRT_AD_MINUS_ONE, INVSQRT_A_MINUS_D, ONE_MINUS_D_SQ, D_MINUS_ONE_SQ, invertSqrt, MAX_255B, bytes255ToNumberLE, _RistrettoPoint, ristretto255, ristretto255_hasher, ED25519_TORSION_SUBGROUP, edwardsToMontgomery, RistrettoPoint, hashToCurve, encodeToCurve, hashToRistretto255, hash_to_ristretto255, init_ed25519, _0n8, _1n8, _2n6, _7n3, _256n2, _0x71n2, SHA3_PI2, SHA3_ROTL2, _SHA3_IOTA2, IOTAS2, SHA3_IOTA_H2, SHA3_IOTA_L2, rotlH, rotlL, Keccak, genShake, shake2562, init_sha32, ed448_exports, ed448_CURVE, E448_CURVE, shake256_114, shake256_64, _1n9, _2n7, _3n3, _4n2, _11n, _22n, _44n, _88n, _223n, Fp2, Fn2, Fp448, Fn448, ED448_DEF, ed448, ed448ph, E448, x448, ELL2_C12, ELL2_J, ed448_hasher, ONE_MINUS_D, ONE_MINUS_TWO_D, SQRT_MINUS_D, INVSQRT_MINUS_D, invertSqrt2, _DecafPoint, decaf448, decaf448_hasher, ED448_TORSION_SUBGROUP, DecafPoint, hashToCurve2, encodeToCurve2, hashToDecaf448, hash_to_decaf448, edwardsToMontgomery2, init_ed448, HMAC, hmac2, init_hmac2, divNearest, DERErr, DER, _0n9, _1n10, _2n8, _3n4, _4n3, init_weierstrass, init_shortw_utils, nist_exports, p256_CURVE, p384_CURVE, p521_CURVE, Fp256, Fp384, Fp521, p256, p256_hasher, p384, p384_hasher, p521, secp256r1, secp384r1, secp521r1, p521_hasher, init_nist, init_makeNobleSignatureImpl, defaultCryptoProvider, init_provider, init_getCiphersuiteImpl, init_resumption, SHA256_K2, SHA256_W2, SHA2_32B, _SHA256, K5122, SHA512_Kh2, SHA512_Kl2, SHA512_W_H2, SHA512_W_L2, SHA2_64B, _SHA512, _SHA384, sha2564, sha5123, sha3843, init_sha23, _HMAC2, hmac3, init_hmac3, init_makeHashImpl2, init_makeNobleSignatureImpl2, BLOCK_SIZE, ZEROS162, ZEROS322, POLY, mul2, swapLE, estimateWindow, GHASH, Polyval, ghash, polyval, init_polyval, BLOCK_SIZE2, BLOCK_SIZE32, EMPTY_BLOCK, POLY2, sbox, rotr32_8, rotl32_8, tableEncoding, xPowers, gcm, _CMAC, cmac, init_aes, init_makeAead2, init_makeKdfImpl2, init_makeDhKem2, init_makeHpke2, init_rng2, nobleCryptoProvider, init_provider2, mlsPublicMessageEncoder, encodeMlsPublicMessage, mlsWelcomeEncoder, encodeMlsWelcome, mlsPrivateMessageEncoder, encodeMlsPrivateMessage, mlsGroupInfoEncoder, encodeMlsGroupInfo, mlsKeyPackageEncoder, encodeMlsKeyPackage, mlsMessageContentEncoder, encodeMlsMessageContent, decodeMlsMessageContent, mlsMessageEncoder, encodeMlsMessage, decodeMlsMessage, init_message, greaseValues, defaultGreaseConfig, init_grease, init_defaultCapabilities, init_src, DEFAULT_CIPHERSUITE, MLSGroupManager, init_mls_group, DOMAIN, NONCE_BYTES3, init_owner_sync, init_mls_delivery_order, init_mls_presend_epoch, dist_exports, init_dist2, DIR_MODE, FILE_MODE, init_secure_file, SYNC_LOCK_STALE_MS, pendingKpPath, init_mls_state, init_mls_kp_pool, PACKAGE, FALLBACK, MAX_LEN, DISALLOWED, init_client_version, CredentialStore, init_credential_store, init_crypto_helpers, STATE_FILE, LEGACY_STATE_FILE, init_state, ACTIVATION_DOMAIN, UUID_RE2, init_transport2, A2ALogGate, init_a2a_log_gate, init_mls_membership_probe, FIRST_DIRTY_DELAY_MS, RETRY_BASE_DELAYS_MS, MAX_RETRY_DELAY_MS, JITTER_FRACTION, HistoryBackupScheduler, init_history_backup_scheduler, FILE_MODE2, init_history_recovery_file, TENANT_ID_PATTERN, DIR_MODE2, FILE_MODE3, HISTORY_RECOVERY_VERIFY_TIMEOUT_MS, VERIFY_TIMEOUT_MESSAGE, HistoryRecoveryVerificationTimeoutError, init_history_recovery_code, ACTIONS, init_decision_reply, history_backup_client_exports, HISTORY_RESTORE_TIMEOUT_MS, HISTORY_RESTORE_RESPONSE_MAX_BYTES, HISTORY_ENVELOPE_MIN_BYTES, HISTORY_AAD_PREFIX, UUID_RE3, GENERATION_RESPONSE_KEYS, utf8Encoder, utf8Decoder, HistoryBackupClient, init_history_backup_client, openclaw_compat_exports, defaultImporter, HEARTBEAT_CANDIDATES, AGENT_EVENT_CANDIDATES, TRANSCRIPT_CANDIDATES, _heartbeatFn, _agentEventFn, _transcriptFn, init_openclaw_compat, http_handlers_exports, init_http_handlers, mcp_proxy_helpers_exports, init_mcp_proxy_helpers, workspace_handlers_exports, MAX_FILE_SIZE, init_workspace_handlers, ROOM_AGENT_TYPES, CREDENTIAL_MESSAGE_TYPES, CATCHUP_MESSAGE_TYPES, POLL_INTERVAL_MS, RECONNECT_BASE_MS, UUID_RE4, RECONNECT_MAX_MS, PENDING_POLL_INTERVAL_MS, HISTORY_RESTORE_TIMEOUT_MS2, HISTORY_UPLOAD_TIMEOUT_MS, CANONICAL_TIMESTAMP_RE, OUTBOUND_DEDUPE_WINDOW_MS, OUTBOUND_DEDUPE_MAX_SUPPRESS_MS, OUTBOUND_DEDUPE_MAX, OUTBOUND_DEDUPE_TYPES, RETRY_CANDIDATE_TTL_MS, RETRY_CANDIDATE_MAX, ROOM_FULFIL_COOLDOWN_MS, SecureChannel, init_channel, init_types, DEFAULT_API_URL, DEFAULT_HTTP_PORT, init_account_config, init_lifecycle, _ocRuntime, _channels, agentVaultPlugin, init_openclaw_plugin, init_gateway_send, init_llm_response_parser, OPENROUTER_PRICING, init_llm_pricing_openrouter, LEGACY_PRICING, PRICING, init_llm_cost, traceStore, init_fetch_interceptor, init_tool_audit, init_harness_compat, managedRoutesRequested, init_openclaw_entry, util, objectUtil, ZodParsedType, getParsedType, init_util, ZodIssueCode, ZodError, init_ZodError, errorMap, en_default, init_en, overrideErrorMap, init_errors2, makeIssue, ParseStatus, INVALID, DIRTY, OK, isAborted, isDirty, isValid, isAsync, init_parseUtil, init_typeAliases, errorUtil, init_errorUtil, ParseInputLazyPath, handleResult, ZodType, cuidRegex, cuid2Regex, ulidRegex, uuidRegex, nanoidRegex, jwtRegex, durationRegex, emailRegex, _emojiRegex, emojiRegex, ipv4Regex, ipv4CidrRegex, ipv6Regex, ipv6CidrRegex, base64Regex, base64urlRegex, dateRegexSource, dateRegex, ZodString, ZodNumber, ZodBigInt, ZodBoolean, ZodDate, ZodSymbol, ZodUndefined, ZodNull, ZodAny, ZodUnknown, ZodNever, ZodVoid, ZodArray, ZodObject, ZodUnion, getDiscriminator, ZodDiscriminatedUnion, ZodIntersection, ZodTuple, ZodRecord, ZodMap, ZodSet, ZodFunction, ZodLazy, ZodLiteral, ZodEnum, ZodNativeEnum, ZodPromise, ZodEffects, ZodOptional, ZodNullable, ZodDefault, ZodCatch, ZodNaN, ZodBranded, ZodPipeline, ZodReadonly, late, ZodFirstPartyTypeKind, stringType, numberType, nanType, bigIntType, booleanType, dateType, symbolType, undefinedType, nullType, anyType, unknownType, neverType, voidType, arrayType, objectType, strictObjectType, unionType, discriminatedUnionType, intersectionType, tupleType, recordType, mapType, setType, functionType, lazyType, literalType, enumType, nativeEnumType, promiseType, effectsType, optionalType, nullableType, preprocessType, pipelineType, init_types2, init_external, init_v3, util_exports, Cached, EVALUATING, captureStackTrace, allowsEval, getParsedType2, propertyKeyTypes, primitiveTypes, NUMBER_FORMAT_RANGES, BIGINT_FORMAT_RANGES, highSurrogate, Class, installing, broke, breaker, CONSTANT_CATCH, init_util2, _a2, _zodDesc, _E, $ZodAsyncError, $ZodEncodeError, globalConfig, init_core, _messageDesc, _issuesDesc, _installedToString, initializer, $ZodError, $ZodRealError, init_errors3, _parse, parse, _parseAsync, parseAsync, _safeParse, safeParse, _safeParseAsync, safeParseAsync, COMPILE_INVALID, COMPILE_FALLBACK, validate, validateAsync, _encode, _decode, _encodeAsync, _decodeAsync, _safeEncode, _safeDecode, _safeEncodeAsync, _safeDecodeAsync, init_parse, cuid, cuid2, ulid, xid, ksuid, nanoid, duration, guid, uuid, email, _emoji, ipv4, ipv6, cidrv4, cidrv6, base64, base64url, httpProtocol, e164, dateSource, date, anyString, integer, number, boolean, _null, lowercase, uppercase, init_regexes, $ZodCheck, _whenHasLength, numericOriginMap, $ZodCheckLessThan, $ZodCheckGreaterThan, $ZodCheckMultipleOf, $ZodCheckNumberFormat, $ZodCheckMaxLength, $ZodCheckMinLength, $ZodCheckLengthEquals, $ZodCheckStringFormat, $ZodCheckRegex, $ZodCheckLowerCase, $ZodCheckUpperCase, $ZodCheckIncludes, $ZodCheckStartsWith, $ZodCheckEndsWith, $ZodCheckOverwrite, init_checks, Doc, init_doc, version, init_versions, $ZodType, toStandardResult, $ZodString, $ZodStringFormat, $ZodGUID, $ZodUUID, $ZodEmail, URL_BAD_FORMAT, URL_UNPARSEABLE, asciiTabOrNewline, $ZodURL, $ZodEmoji, $ZodNanoID, $ZodCUID, $ZodCUID2, $ZodULID, $ZodXID, $ZodKSUID, $ZodISODateTime, $ZodISODate, $ZodISOTime, $ZodISODuration, $ZodIPv4, ipv6Alphabet, $ZodIPv6, $ZodCIDRv4, $ZodCIDRv6, base64Charset, $ZodBase64, base64urlCharset, $ZodBase64URL, $ZodE164, $ZodJWT, $ZodNumber, $ZodNumberFormat, $ZodBoolean, $ZodNull, $ZodUnknown, $ZodNever, arraySize, $ZodArray, NO_SYMBOL_KEYS, $ZodObject, $ZodObjectJIT, $ZodUnion, $ZodDiscriminatedUnion, $ZodIntersection, $ZodRecord, $ZodEnum, $ZodLiteral, $ZodTransform, $ZodOptional, $ZodExactOptional, $ZodNullable, $ZodDefault, $ZodPrefault, $ZodNonOptional, $ZodCatch, $ZodPipe, $ZodPreprocess, $ZodReadonly, $ZodCustom, init_schemas, $ZodCyclicError, STATE, NO_ISSUES, recursive, NONE, ASSUMED, PROVEN, handoff, open4, memo, init_memoizer, error, init_en2, init_locales, _a3, $ZodRegistry, globalRegistry, init_registries, init_compile, init_api, FOLDABLE_KEYS, UNION_KEYS, createToJSONSchemaMethod, createStandardJSONSchemaMethod, init_to_json_schema, narrowMin, narrowMax, narrowBoth, addDivisor, addPattern, intersectMime, setFormat, minContributor, maxContributor, formatContributor, contributors, formatMap, exactPatterns, exactPattern, stringProcessor, numberProcessor, booleanProcessor, bigintProcessor, symbolProcessor, nullProcessor, undefinedProcessor, voidProcessor, neverProcessor, anyProcessor, unknownProcessor, dateProcessor, enumProcessor, literalProcessor, nanProcessor, templateLiteralProcessor, fileProcessor, successProcessor, customProcessor, functionProcessor, transformProcessor, mapProcessor, setProcessor, arrayProcessor, objectProcessor, unionProcessor, intersectionProcessor, tupleProcessor, pendingRecords, recordProcessor, nullableProcessor, nonoptionalProcessor, UNREPRESENTABLE_DEFAULT, defaultProcessor, prefaultProcessor, catchProcessor, pipeProcessor, readonlyProcessor, promiseProcessor, optionalProcessor, lazyProcessor, allProcessors, init_json_schema_processors, init_json_schema, init_core2, init_parse2, ZodMiniType, ZodMiniObject, init_schemas2, init_checks2, init_iso, init_coerce, init_external2, init_v4_mini, init_zod_compat, init_checks3, _installedErrorProtos, initializer2, ZodRealError, init_errors4, parse2, parseAsync2, safeParse3, safeParseAsync3, encode3, decode2, encodeAsync2, decodeAsync2, safeEncode2, safeDecode2, safeEncodeAsync2, safeDecodeAsync2, init_parse3, ZodType2, _ZodString, ZodString2, ZodStringFormat, ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration, ZodEmail, ZodGUID, ZodUUID, ZodURL, ZodEmoji, ZodNanoID, ZodCUID, ZodCUID2, ZodULID, ZodXID, ZodKSUID, ZodIPv4, ZodIPv6, ZodCIDRv4, ZodCIDRv6, ZodBase64, ZodBase64URL, ZodE164, ZodJWT, ZodNumber2, ZodNumberFormat, ZodBoolean2, ZodNull2, ZodUnknown2, ZodNever2, ZodArray2, ZodObject2, ZodUnion2, ZodDiscriminatedUnion2, ZodIntersection2, ZodRecord2, ZodEnum2, ZodLiteral2, ZodTransform, ZodOptional2, ZodExactOptional, ZodNullable2, ZodDefault2, ZodPrefault, ZodNonOptional, ZodCatch2, ZodPipe, ZodPreprocess, ZodReadonly2, ZodCustom, init_schemas3, ZodFirstPartyTypeKind2, init_compat, iso_exports2, init_iso2, init_coerce2, init_external3, init_classic, init_v4, LATEST_PROTOCOL_VERSION, DEFAULT_NEGOTIATED_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, RELATED_TASK_META_KEY, JSONRPC_VERSION, AssertObjectSchema, ProgressTokenSchema, CursorSchema, TaskCreationParamsSchema, TaskMetadataSchema, RelatedTaskMetadataSchema, RequestMetaSchema, BaseRequestParamsSchema, TaskAugmentedRequestParamsSchema, isTaskAugmentedRequestParams, RequestSchema, NotificationsParamsSchema, NotificationSchema, ResultSchema, RequestIdSchema, JSONRPCRequestSchema, isJSONRPCRequest, JSONRPCNotificationSchema, isJSONRPCNotification, JSONRPCResultResponseSchema, isJSONRPCResultResponse, ErrorCode, JSONRPCErrorResponseSchema, isJSONRPCErrorResponse, JSONRPCMessageSchema, JSONRPCResponseSchema, EmptyResultSchema, CancelledNotificationParamsSchema, CancelledNotificationSchema, IconSchema, IconsSchema, BaseMetadataSchema, ImplementationSchema, FormElicitationCapabilitySchema, ElicitationCapabilitySchema, ClientTasksCapabilitySchema, ServerTasksCapabilitySchema, ClientCapabilitiesSchema, InitializeRequestParamsSchema, InitializeRequestSchema, isInitializeRequest, ServerCapabilitiesSchema, InitializeResultSchema, InitializedNotificationSchema, PingRequestSchema, ProgressSchema, ProgressNotificationParamsSchema, ProgressNotificationSchema, PaginatedRequestParamsSchema, PaginatedRequestSchema, PaginatedResultSchema, TaskStatusSchema, TaskSchema, CreateTaskResultSchema, TaskStatusNotificationParamsSchema, TaskStatusNotificationSchema, GetTaskRequestSchema, GetTaskResultSchema, GetTaskPayloadRequestSchema, GetTaskPayloadResultSchema, ListTasksRequestSchema, ListTasksResultSchema, CancelTaskRequestSchema, CancelTaskResultSchema, ResourceContentsSchema, TextResourceContentsSchema, Base64Schema, BlobResourceContentsSchema, RoleSchema, AnnotationsSchema, ResourceSchema, ResourceTemplateSchema, ListResourcesRequestSchema, ListResourcesResultSchema, ListResourceTemplatesRequestSchema, ListResourceTemplatesResultSchema, ResourceRequestParamsSchema, ReadResourceRequestParamsSchema, ReadResourceRequestSchema, ReadResourceResultSchema, ResourceListChangedNotificationSchema, SubscribeRequestParamsSchema, SubscribeRequestSchema, UnsubscribeRequestParamsSchema, UnsubscribeRequestSchema, ResourceUpdatedNotificationParamsSchema, ResourceUpdatedNotificationSchema, PromptArgumentSchema, PromptSchema, ListPromptsRequestSchema, ListPromptsResultSchema, GetPromptRequestParamsSchema, GetPromptRequestSchema, TextContentSchema, ImageContentSchema, AudioContentSchema, ToolUseContentSchema, EmbeddedResourceSchema, ResourceLinkSchema, ContentBlockSchema, PromptMessageSchema, GetPromptResultSchema, PromptListChangedNotificationSchema, ToolAnnotationsSchema, ToolExecutionSchema, ToolSchema, ListToolsRequestSchema, ListToolsResultSchema, CallToolResultSchema, CompatibilityCallToolResultSchema, CallToolRequestParamsSchema, CallToolRequestSchema, ToolListChangedNotificationSchema, ListChangedOptionsBaseSchema, LoggingLevelSchema, SetLevelRequestParamsSchema, SetLevelRequestSchema, LoggingMessageNotificationParamsSchema, LoggingMessageNotificationSchema, ModelHintSchema, ModelPreferencesSchema, ToolChoiceSchema, ToolResultContentSchema, SamplingContentSchema, SamplingMessageContentBlockSchema, SamplingMessageSchema, CreateMessageRequestParamsSchema, CreateMessageRequestSchema, CreateMessageResultSchema, CreateMessageResultWithToolsSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema, UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema, LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema, EnumSchemaSchema, PrimitiveSchemaDefinitionSchema, ElicitRequestFormParamsSchema, ElicitRequestURLParamsSchema, ElicitRequestParamsSchema, ElicitRequestSchema, ElicitationCompleteNotificationParamsSchema, ElicitationCompleteNotificationSchema, ElicitResultSchema, ResourceTemplateReferenceSchema, PromptReferenceSchema, CompleteRequestParamsSchema, CompleteRequestSchema, CompleteResultSchema, RootSchema, ListRootsRequestSchema, ListRootsResultSchema, RootsListChangedNotificationSchema, ClientRequestSchema, ClientNotificationSchema, ClientResultSchema, ServerRequestSchema, ServerNotificationSchema, ServerResultSchema, McpError, UrlElicitationRequiredError, init_types3, init_interfaces, ignoreOverride, defaultOptions, getDefaultOptions, init_Options, getRefs, init_Refs, init_errorMessages, getRelativePath, init_getRelativePath, init_any, init_array2, init_bigint, init_boolean, init_branded, parseCatchDef, init_catch, integerDateParser, init_date, init_default, init_effects, init_enum, isJsonSchema7AllOfType, init_intersection, init_literal, emojiRegex2, zodPatterns, ALPHA_NUMERIC, init_string2, init_record, init_map, init_nativeEnum, init_never, init_null, primitiveMappings, asAnyOf, init_union, init_nullable, init_number2, init_object, parseOptionalDef, init_optional2, parsePipelineDef, init_pipeline, init_promise, init_set, init_tuple, init_undefined, init_unknown, parseReadonlyDef, init_readonly, selectParser, init_selectParser, get$ref, addMeta, init_parseDef, init_parseTypes, zodToJsonSchema, init_zodToJsonSchema, init_esm, init_zod_json_schema_compat, DEFAULT_REQUEST_TIMEOUT_MSEC, Protocol, init_protocol, require_code, require_scope, require_codegen, require_util, require_names, require_errors, require_boolSchema, require_rules, require_applicability, require_dataType, require_defaults, require_code2, require_keyword, require_subschema, require_fast_deep_equal, require_json_schema_traverse, require_resolve, require_validate, require_validation_error, require_ref_error, require_compile, require_data, require_utils, require_schemes, require_fast_uri, require_uri, require_core, require_id, require_ref, require_core2, require_limitNumber, require_multipleOf, require_ucs2length, require_limitLength, require_pattern, require_limitProperties, require_required, require_limitItems, require_equal, require_uniqueItems, require_const, require_enum, require_validation, require_additionalItems, require_items, require_prefixItems, require_items2020, require_contains, require_dependencies, require_propertyNames, require_additionalProperties, require_properties, require_patternProperties, require_not, require_anyOf, require_oneOf, require_allOf, require_if, require_thenElse, require_applicator, require_format, require_format2, require_metadata, require_draft7, require_types, require_discriminator, require_json_schema_draft_07, require_ajv, require_formats, require_limit, require_dist, import_ajv, import_ajv_formats, AjvJsonSchemaValidator, init_ajv_provider, ExperimentalServerTasks, init_server, init_helpers, Server, init_server2, COMPLETABLE_SYMBOL, McpZodTypeKind, init_completable, init_uriTemplate, TOOL_NAME_REGEX, init_toolNameValidation, ExperimentalMcpServerTasks, init_mcp_server, init_zod, McpServer, EMPTY_OBJECT_JSON_SCHEMA, EMPTY_COMPLETION_RESULT, init_mcp, RequestError, toRequestError, GlobalRequest, Request2, newHeadersFromIncoming, wrapBodyStream, newRequestFromIncoming, getRequestCache, requestCache, incomingKey, urlKey, headersKey, abortControllerKey, getAbortController, requestPrototype, newRequest, responseCache, getResponseCache, cacheKey, GlobalResponse, Response2, buildOutgoingHttpHeaders, X_ALREADY_SENT, outgoingEnded, handleRequestError, handleFetchError, handleResponseError, flushHeaders, responseViaCache, isPromise, responseViaResponseObject, getRequestListener, init_dist22, require_content_type, import_content_type, init_mediaType, DEFAULT_MAX_REQUEST_BODY_SIZE, MAX_BATCH_SIZE, init_requestBody, DEFAULT_SSE_KEEP_ALIVE_MS, MAX_TIMER_DELAY_MS, init_sseKeepAlive, WebStandardStreamableHTTPServerTransport, init_webStandardStreamableHttp, StreamableHTTPServerTransport, init_streamableHttp, AgentVaultMcpServer, init_mcp_server2, init_mcp_handlers, init_skill_manifest, init_skill_invoker, spanBuffer, init_skill_telemetry, PolicyEnforcer, init_policy_enforcer, VERSION, init_index;
17646
+ var __create, __defProp2, __getOwnPropDesc, __getOwnPropNames2, __getProtoOf, __hasOwnProp, __esm2, __commonJS, __export2, __copyProps, __toESM, SENTINEL, WRAPPERS, INSTRUCTION, init_abstention, init_envelope_text, init_mls_commit_classify, MENTION_RE, BROADCAST_NAMES, init_room_protocol, __filename, __dirname, url, path, Module, Module, root, window_, crypto_, randomValuesStandard, crypto2, randomValueNodeJS, _Module, libsodium_sumo_default, init_libsodium_sumo, a, r, t, c, libsodium_wrappers_default, init_libsodium_wrappers, init_keys, init_x3dh, MAX_SKIP, CHAIN_KEY_SEED, MSG_KEY_SEED, HEADER_KEY_SEED, DoubleRatchet, init_ratchet, init_file_crypto, DOMAIN_DID_DOCUMENT, DOMAIN_TRANSFER_INTENT, DOMAIN_TRANSFER_ACCEPT, BASE58_ALPHABET, init_did, BUILTIN_PATTERNS, ScanEngine, init_scan_engine, init_merkle, VC_CONTEXT_V2, AV_CREDENTIAL_CONTEXT, CRYPTOSUITE, BASE58_ALPHABET2, init_vc, init_transport, init_telemetry, TelemetryReporter, init_telemetry_reporter, CROCKFORD, ARGON2_OPSLIMIT, ARGON2_MEMLIMIT, SALT_BYTES, NONCE_BYTES, KEY_BYTES, BACKUP_VERSION, MAX_BACKUP_SIZE, init_backup, atitle, aobject, aopts, isLE, swap8IfBE, swap32IfBE, hasHexBuiltin, hexes, oidNist, init_utils, BSIGMA, init_blake, U32_MASK64, _32n, fromNumH, fromNumL, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, add3L, add3H, add4L, add4H, add5L, add5H, init_u64, HashMD, SHA256_IV, SHA384_IV, SHA512_IV, init_md, B2B_IV, BBUF, _BLAKE2, _BLAKE2b, blake2b, init_blake2, CROCKFORD2, SALT_BYTES2, NONCE_BYTES2, KEY_BYTES2, TAG_BYTES, ENVELOPE_OVERHEAD, AAD_PREFIX, UUID_RE, UUID_V4_RE, DIGEST_ID_RE, TIMESTAMP_RE, encoder, decoder, HISTORY_MAGIC, HISTORY_ARCHIVE_VERSION, HISTORY_MAX_ENTRIES, HISTORY_MAX_BLOB_BYTES, HISTORY_KDF_OPSLIMIT, HISTORY_KDF_MEMLIMIT, HistoryEntryTooLargeError, init_history_backup, init_approval, encVoid, init_tlsEncoder, uint8Encoder, encodeUint8, decodeUint8, uint16Encoder, encodeUint16, decodeUint16, uint32Encoder, encodeUint32, decodeUint32, uint64Encoder, encodeUint64, decodeUint64, init_number, init_tlsDecoder, init_enumHelpers, defaultProposalTypes, defaultProposalTypeEncoder, encodeDefaultProposalType, decodeDefaultProposalType, init_defaultProposalType, defaultExtensionTypes, defaultExtensionTypeEncoder, encodeDefaultExtensionType, decodeDefaultExtensionType, init_defaultExtensionType, acceptAll, init_incomingMessageAction, MlsError, ValidationError, CodecError, UsageError, DependencyError, CryptoVerificationError, CryptoError, InternalError, init_mlsError, init_byteArray, varLenDataEncoder, decodeVarLenData, init_variableLength, init_constantTimeCompare, extensionTypeEncoder, encodeExtensionType, decodeExtensionType, extensionEncoder, encodeExtension, decodeExtension, init_extension, credentialTypes, credentialTypeEncoder, encodeCredentialType, decodeCredentialType, init_credentialType, credentialBasicEncoder, encodeCredentialBasic, credentialX509Encoder, encodeCredentialX509, credentialCustomEncoder, encodeCredentialCustom, credentialEncoder, encodeCredential, decodeCredentialBasic, decodeCredentialX509, decodeCredential, init_credential, externalSenderEncoder, encodeExternalSender, decodeExternalSender, init_externalSender, init_hash, init_optional, ciphersuites, ciphersuiteEncoder, encodeCiphersuite, decodeCiphersuite, ciphersuiteValues, init_ciphersuite, init_signature, protocolVersions, protocolVersionEncoder, encodeProtocolVersion, decodeProtocolVersion, init_protocolVersion, capabilitiesEncoder, encodeCapabilities, decodeCapabilities, init_capabilities, leafNodeSources, leafNodeSourceEncoder, encodeLeafNodeSource, decodeLeafNodeSource, init_leafNodeSource, lifetimeEncoder, encodeLifetime, decodeLifetime, defaultLifetime, init_lifetime, leafNodeDataEncoder, encodeLeafNodeData, decodeLeafNodeData, leafNodeInfoKeyPackageEncoder, encodeLeafNodeInfoKeyPackage, leafNodeInfoUpdateOmittedEncoder, encodeLeafNodeInfoUpdateOmitted, leafNodeInfoCommitOmittedEncoder, encodeLeafNodeInfoCommitOmitted, leafNodeInfoOmittedEncoder, encodeLeafNodeInfoOmitted, decodeLeafNodeInfoKeyPackage, decodeLeafNodeInfoUpdateOmitted, decodeLeafNodeInfoCommitOmitted, decodeLeafNodeInfoOmitted, leafNodeInfoUpdateEncoder, encodeLeafNodeInfoUpdate, leafNodeInfoCommitEncoder, encodeLeafNodeInfoCommit, leafNodeInfoEncoder, encodeLeafNodeInfo, decodeLeafNodeInfoUpdate, decodeLeafNodeInfoCommit, decodeLeafNodeInfo, leafNodeTBSEncoder, encodeLeafNodeTBS, leafNodeEncoder, encodeLeafNode, decodeLeafNode, decodeLeafNodeKeyPackage, decodeLeafNodeCommit, decodeLeafNodeUpdate, init_leafNode, keyPackageTBSEncoder, encodeKeyPackageTBS, decodeKeyPackageTBS, keyPackageEncoder, encodeKeyPackage, decodeKeyPackage, init_keyPackage, init_kdf, pskTypes, pskTypeEncoder, encodePskType, decodePskType, resumptionPSKUsages, resumptionPSKUsageEncoder, encodeResumptionPSKUsage, decodeResumptionPSKUsage, encodePskInfoExternal, encodePskInfoResumption, decodePskInfoResumption, pskInfoEncoder, encodePskInfo, decodePskInfo, pskIdEncoder, encodePskId, decodePskId, pskLabelEncoder, encodePskLabel, decodePskLabel, init_presharedkey, addEncoder, encodeAdd, decodeAdd, updateEncoder, encodeUpdate, decodeUpdate, removeEncoder, encodeRemove, decodeRemove, pskEncoder, encodePSK, decodePSK, reinitEncoder, encodeReinit, decodeReinit, externalInitEncoder, encodeExternalInit, decodeExternalInit, groupContextExtensionsEncoder, encodeGroupContextExtensions, decodeGroupContextExtensions, proposalAddEncoder, encodeProposalAdd, proposalUpdateEncoder, encodeProposalUpdate, proposalRemoveEncoder, encodeProposalRemove, proposalPSKEncoder, encodeProposalPSK, proposalReinitEncoder, encodeProposalReinit, proposalExternalInitEncoder, encodeProposalExternalInit, proposalGroupContextExtensionsEncoder, encodeProposalGroupContextExtensions, proposalCustomEncoder, encodeProposalCustom, proposalEncoder, encodeProposal, decodeProposalAdd, decodeProposalUpdate, decodeProposalRemove, decodeProposalPSK, decodeProposalReinit, decodeProposalExternalInit, decodeProposalGroupContextExtensions, decodeProposal, init_proposal, proposalOrRefTypes, proposalOrRefTypeEncoder, encodeProposalOrRefType, decodeProposalOrRefType, proposalOrRefProposalEncoder, encodeProposalOrRefProposal, proposalOrRefProposalRefEncoder, encodeProposalOrRefProposalRef, proposalOrRefEncoder, encodeProposalOrRef, decodeProposalOrRef, init_proposalOrRefType, init_hpke, groupContextEncoder, encodeGroupContext, decodeGroupContext, init_groupContext, nodeTypes, nodeTypeEncoder, encodeNodeType, decodeNodeType, init_nodeType, parentNodeEncoder, encodeParentNode, decodeParentNode, init_parentNode, init_treemath, nodeEncoder, encodeNode, decodeNode, ratchetTreeEncoder, encodeRatchetTree, decodeRatchetTree, init_ratchetTree, leafNodeHashInputEncoder, encodeLeafNodeHashInput, decodeLeafNodeHashInput, parentNodeHashInputEncoder, encodeParentNodeHashInput, decodeParentNodeHashInput, treeHashInputEncoder, encodeTreeHashInput, decodeTreeHashInput, init_treeHash, parentHashInputEncoder, encodeParentHashInput, decodeParentHashInput, init_parentHash, hpkeCiphertextEncoder, encodeHpkeCiphertext, decodeHpkeCiphertext, init_hpkeCiphertext, updatePathNodeEncoder, encodeUpdatePathNode, decodeUpdatePathNode, updatePathEncoder, encodeUpdatePath, decodeUpdatePath, init_updatePath, commitEncoder, encodeCommit, decodeCommit, init_commit, contentTypes, contentTypeEncoder, encodeContentType, decodeContentType, init_contentType, wireformats, wireformatEncoder, encodeWireformat, decodeWireformat, init_wireformat, senderTypes, senderTypeEncoder, encodeSenderType, decodeSenderType, senderEncoder, encodeSender, decodeSender, reuseGuardEncoder, encodeReuseGuard, decodeReuseGuard, senderDataEncoder, encodeSenderData, decodeSenderData, senderDataAADEncoder, encodeSenderDataAAD, decodeSenderDataAAD, init_sender, framedContentApplicationDataEncoder, encodeFramedContentApplicationData, framedContentProposalDataEncoder, encodeFramedContentProposalData, framedContentCommitDataEncoder, encodeFramedContentCommitData, framedContentInfoEncoder, encodeFramedContentInfo, decodeFramedContentApplicationData, decodeFramedContentProposalData, decodeFramedContentCommitData, decodeFramedContentInfo, framedContentEncoder, encodeFramedContent, decodeFramedContent, senderInfoEncoder, encodeSenderInfo, framedContentTBSEncoder, encodeFramedContentTBS, encodeFramedContentAuthDataContent, encodeFramedContentAuthDataCommit, framedContentAuthDataEncoder, encodeFramedContentAuthData, decodeFramedContentAuthDataCommit, init_framedContent, authenticatedContentEncoder, encodeAuthenticatedContent, decodeAuthenticatedContent, authenticatedContentTBMEncoder, encodeAuthenticatedContentTBM, init_authenticatedContent, publicMessageInfoEncoder, encodePublicMessageInfo, publicMessageEncoder, encodePublicMessage, decodePublicMessage, init_publicMessage, init_messageProtectionPublic, init_externalProposal, requiredCapabilitiesEncoder, encodeRequiredCapabilities, decodeRequiredCapabilities, init_requiredCapabilities, defaultAuthenticationService, init_authenticationService, defaultPaddingConfig, init_paddingConfig, defaultKeyPackageEqualityConfig, init_keyPackageEqualityConfig, defaultLifetimeConfig, init_lifetimeConfig, defaultKeyRetentionConfig, init_keyRetentionConfig, groupInfoTBSEncoder, encodeGroupInfoTBS, decodeGroupInfoTBS, groupInfoEncoder, encodeGroupInfo, decodeGroupInfo, init_groupInfo, keyScheduleEncoder, encodeKeySchedule, decodeKeySchedule, init_keySchedule, generationSecretEncoder, decodeGenerationSecret, secretTreeNodeEncoder, decodeSecretTreeNode, secretTreeEncoder, decodeSecretTree, init_secretTree, confirmedTranscriptHashInputEncoder, encodeConfirmedTranscriptHashInput, decodeConfirmedTranscriptHashInput, init_transcriptHash, groupSecretsEncoder, encodeGroupSecrets, decodeGroupSecrets, init_groupSecrets, encryptedGroupSecretsEncoder, encodeEncryptedGroupSecrets, decodeEncryptedGroupSecrets, welcomeEncoder, encodeWelcome, decodeWelcome, init_welcome, init_pathSecrets, privateKeyPathEncoder, decodePrivateKeyPath, init_privateKeyPath, proposalWithSenderEncoder, decodeProposalWithSender, unappliedProposalsEncoder, decodeUnappliedProposals, init_unappliedProposals, emptyPskIndex, init_pskIndex, init_addToMap, defaultClientConfig, init_clientConfig, init_array, stringEncoder, encodeString, decodeString, init_string, activeEncoder, suspendedPendingReinitEncoder, removedFromGroupEncoder, groupActiveStateEncoder, decodeGroupActiveState, init_groupActiveState, epochReceiverDataEncoder, decodeEpochReceiverData, init_epochReceiverData, groupStateEncoder, encodeGroupState, decodeGroupState, groupStateEncoderWithoutTree, encodeGroupStateWithoutTree, emptyProposals, init_clientState, privateMessageEncoder, encodePrivateMessage, decodePrivateMessage, privateContentAADEncoder, encodePrivateContentAAD, decodePrivateContentAAD, init_privateMessage, init_messageProtection, init_createMessage, init_createCommit, init_processMessages, init_makeHashImpl, HpkeError, InvalidParamError, SerializeError, DeserializeError, EncapError, DecapError, ExportError, SealError, OpenError, MessageLimitReachedError, DeriveKeyPairError, NotSupportedError, init_errors, dntGlobals, dntGlobalThis, init_dnt_shims, NativeAlgorithm, init_algorithm, Mode, KemId, KdfId, AeadId, init_identifiers, INPUT_LENGTH_LIMIT, INFO_LENGTH_LIMIT, MINIMUM_PSK_LENGTH, EMPTY, BYTE_TO_BIGINT_256, init_consts, SUITE_ID_HEADER_KEM, init_kemInterface, HPKE_VERSION, HkdfNative, HkdfSha256Native, HkdfSha384Native, HkdfSha512Native, init_hkdf, isCryptoKeyPair, init_misc, LABEL_EAE_PRK, LABEL_SHARED_SECRET, Dhkem, init_dhkem, KEM_USAGES, LABEL_DKP_PRK, LABEL_SK, init_dhkemPrimitives, Bignum, init_bignum, LABEL_CANDIDATE, ORDER_P_256, ORDER_P_384, ORDER_P_521, PKCS8_ALG_ID_P_256, PKCS8_ALG_ID_P_384, PKCS8_ALG_ID_P_521, EC_P_256_PARAMS, EC_P_384_PARAMS, EC_P_521_PARAMS, Ec, init_ec, init_xCryptoKey, init_xCurve, init_hybridkem, AEAD_USAGES, init_aeadEncryptionContext, _endianTestBuffer, _endianTestBytes, isLE2, init_noble, init_hash2, _HMAC, hmac, init_hmac, init_md2, U32_MASK642, _32n2, init_u642, init_sha2, _0n, _1n, _2n, _7n, _256n, _0x71n, SHA3_PI, SHA3_ROTL, _SHA3_IOTA, IOTAS, SHA3_IOTA_H, SHA3_IOTA_L, init_sha3, init_modular, init_curve, init_montgomery, init_mod, AesGcmContext, Aes128Gcm, Aes256Gcm, init_aesGcm, init_exportOnly, init_emitNotSupported, LABEL_SEC, ExporterContextImpl, RecipientExporterContextImpl, SenderExporterContextImpl, init_exporterContext, EncryptionContextImpl, init_encryptionContext, __classPrivateFieldGet, __classPrivateFieldSet, _Mutex_locked, Mutex, init_mutex, __classPrivateFieldGet2, __classPrivateFieldSet2, _RecipientContextImpl_mutex, RecipientContextImpl, init_recipientContext, __classPrivateFieldGet3, __classPrivateFieldSet3, _SenderContextImpl_mutex, SenderContextImpl, init_senderContext, LABEL_BASE_NONCE, LABEL_EXP, LABEL_INFO_HASH, LABEL_KEY, LABEL_PSK_ID_HASH, LABEL_SECRET, SUITE_ID_HEADER_HPKE, CipherSuiteNative, init_cipherSuiteNative, DhkemP256HkdfSha256Native, DhkemP384HkdfSha384Native, DhkemP521HkdfSha512Native, init_dhkemNative, CipherSuite, DhkemP256HkdfSha256, DhkemP384HkdfSha384, DhkemP521HkdfSha512, HkdfSha256, HkdfSha384, HkdfSha512, init_native, ALG_NAME, PKCS8_ALG_ID_X25519, BASE_POINT_X25519, X25519, init_x25519, DhkemX25519HkdfSha256, init_dhkemX25519, PKCS8_ALG_ID_X448, init_x448, init_dhkemX448, init_mod2, init_hpke2, isLE3, wrapCipher, init_utils2, encodeStr, sigma16, sigma32, sigma16_32, sigma32_32, BLOCK_LEN, BLOCK_LEN32, MAX_COUNTER, U32_EMPTY, _XorStreamPRG, createPRG, init_arx, Poly1305, poly1305, init_poly1305, chacha_exports, chacha20orig, chacha20, xchacha20, chacha8, chacha12, ZEROS16, updatePadded, ZEROS32, _poly1305_aead, chacha20poly1305, xchacha20poly1305, rngChacha20, rngChacha8, init_chacha, init_makeAead, init_makeKdfImpl, init_makeDhKem, init_makeHpke, defaultRng, init_rng, crypto3, init_cryptoNode, isLE4, swap32IfBE3, hasHexBuiltin2, hexes2, asciis, Hash, init_utils3, HashMD3, SHA256_IV3, SHA384_IV3, SHA512_IV3, init_md3, U32_MASK643, _32n3, shrSH3, shrSL3, rotrSH3, rotrSL3, rotrBH3, rotrBL3, rotlSH2, rotlSL2, rotlBH2, rotlBL2, add3L3, add3H3, add4L3, add4H3, add5L3, add5H3, init_u643, SHA256_K, SHA256_W, SHA256, K512, SHA512_Kh, SHA512_Kl, SHA512_W_H, SHA512_W_L, SHA512, SHA384, sha2563, sha5122, sha3842, init_sha22, _0n2, _1n2, isPosBig, bitMask, notImplemented, init_utils4, _0n3, _1n3, _2n2, _3n, _4n, _5n, _7n2, _8n, _9n, _16n, isNegativeLE, FIELD_FIELDS, init_modular2, _0n4, _1n4, pointPrecomputes, pointWindowSizes, wNAF, init_curve2, _0n5, _1n5, _2n3, _8n2, PrimeEdwardsPoint, init_edwards, os2ip, _DST_scalar, init_hash_to_curve, _0n6, _1n6, _2n4, init_montgomery2, ed25519_exports, _0n7, _1n7, _2n5, _3n2, _5n2, _8n3, ed25519_CURVE_p, ed25519_CURVE, ED25519_SQRT_M1, Fp, Fn, ed25519Defaults, ed25519, ed25519ctx, ed25519ph, x25519, ELL2_C1, ELL2_C2, ELL2_C3, ELL2_C1_EDWARDS, ed25519_hasher, SQRT_M1, SQRT_AD_MINUS_ONE, INVSQRT_A_MINUS_D, ONE_MINUS_D_SQ, D_MINUS_ONE_SQ, invertSqrt, MAX_255B, bytes255ToNumberLE, _RistrettoPoint, ristretto255, ristretto255_hasher, ED25519_TORSION_SUBGROUP, edwardsToMontgomery, RistrettoPoint, hashToCurve, encodeToCurve, hashToRistretto255, hash_to_ristretto255, init_ed25519, _0n8, _1n8, _2n6, _7n3, _256n2, _0x71n2, SHA3_PI2, SHA3_ROTL2, _SHA3_IOTA2, IOTAS2, SHA3_IOTA_H2, SHA3_IOTA_L2, rotlH, rotlL, Keccak, genShake, shake2562, init_sha32, ed448_exports, ed448_CURVE, E448_CURVE, shake256_114, shake256_64, _1n9, _2n7, _3n3, _4n2, _11n, _22n, _44n, _88n, _223n, Fp2, Fn2, Fp448, Fn448, ED448_DEF, ed448, ed448ph, E448, x448, ELL2_C12, ELL2_J, ed448_hasher, ONE_MINUS_D, ONE_MINUS_TWO_D, SQRT_MINUS_D, INVSQRT_MINUS_D, invertSqrt2, _DecafPoint, decaf448, decaf448_hasher, ED448_TORSION_SUBGROUP, DecafPoint, hashToCurve2, encodeToCurve2, hashToDecaf448, hash_to_decaf448, edwardsToMontgomery2, init_ed448, HMAC, hmac2, init_hmac2, divNearest, DERErr, DER, _0n9, _1n10, _2n8, _3n4, _4n3, init_weierstrass, init_shortw_utils, nist_exports, p256_CURVE, p384_CURVE, p521_CURVE, Fp256, Fp384, Fp521, p256, p256_hasher, p384, p384_hasher, p521, secp256r1, secp384r1, secp521r1, p521_hasher, init_nist, init_makeNobleSignatureImpl, defaultCryptoProvider, init_provider, init_getCiphersuiteImpl, init_resumption, SHA256_K2, SHA256_W2, SHA2_32B, _SHA256, K5122, SHA512_Kh2, SHA512_Kl2, SHA512_W_H2, SHA512_W_L2, SHA2_64B, _SHA512, _SHA384, sha2564, sha5123, sha3843, init_sha23, _HMAC2, hmac3, init_hmac3, init_makeHashImpl2, init_makeNobleSignatureImpl2, BLOCK_SIZE, ZEROS162, ZEROS322, POLY, mul2, swapLE, estimateWindow, GHASH, Polyval, ghash, polyval, init_polyval, BLOCK_SIZE2, BLOCK_SIZE32, EMPTY_BLOCK, POLY2, sbox, rotr32_8, rotl32_8, tableEncoding, xPowers, gcm, _CMAC, cmac, init_aes, init_makeAead2, init_makeKdfImpl2, init_makeDhKem2, init_makeHpke2, init_rng2, nobleCryptoProvider, init_provider2, mlsPublicMessageEncoder, encodeMlsPublicMessage, mlsWelcomeEncoder, encodeMlsWelcome, mlsPrivateMessageEncoder, encodeMlsPrivateMessage, mlsGroupInfoEncoder, encodeMlsGroupInfo, mlsKeyPackageEncoder, encodeMlsKeyPackage, mlsMessageContentEncoder, encodeMlsMessageContent, decodeMlsMessageContent, mlsMessageEncoder, encodeMlsMessage, decodeMlsMessage, init_message, greaseValues, defaultGreaseConfig, init_grease, init_defaultCapabilities, init_src, DEFAULT_CIPHERSUITE, MLSGroupManager, init_mls_group, DOMAIN, NONCE_BYTES3, init_owner_sync, init_mls_delivery_order, init_mls_presend_epoch, dist_exports, init_dist2, DIR_MODE, FILE_MODE, init_secure_file, SYNC_LOCK_STALE_MS, pendingKpPath, init_mls_state, init_mls_kp_pool, PACKAGE, FALLBACK, MAX_LEN, DISALLOWED, init_client_version, CredentialStore, init_credential_store, init_crypto_helpers, STATE_FILE, LEGACY_STATE_FILE, init_state, ACTIVATION_DOMAIN, UUID_RE2, init_transport2, A2ALogGate, init_a2a_log_gate, init_mls_membership_probe, FIRST_DIRTY_DELAY_MS, RETRY_BASE_DELAYS_MS, MAX_RETRY_DELAY_MS, JITTER_FRACTION, HistoryBackupScheduler, init_history_backup_scheduler, FILE_MODE2, init_history_recovery_file, TENANT_ID_PATTERN, DIR_MODE2, FILE_MODE3, HISTORY_RECOVERY_VERIFY_TIMEOUT_MS, VERIFY_TIMEOUT_MESSAGE, HistoryRecoveryVerificationTimeoutError, init_history_recovery_code, ACTIONS, init_decision_reply, history_backup_client_exports, HISTORY_RESTORE_TIMEOUT_MS, HISTORY_RESTORE_RESPONSE_MAX_BYTES, HISTORY_ENVELOPE_MIN_BYTES, HISTORY_AAD_PREFIX, UUID_RE3, GENERATION_RESPONSE_KEYS, utf8Encoder, utf8Decoder, HistoryBackupClient, init_history_backup_client, openclaw_compat_exports, defaultImporter, HEARTBEAT_CANDIDATES, AGENT_EVENT_CANDIDATES, TRANSCRIPT_CANDIDATES, _heartbeatFn, _agentEventFn, _transcriptFn, init_openclaw_compat, http_handlers_exports, init_http_handlers, mcp_proxy_helpers_exports, init_mcp_proxy_helpers, workspace_handlers_exports, MAX_FILE_SIZE, init_workspace_handlers, ROOM_AGENT_TYPES, CREDENTIAL_MESSAGE_TYPES, CATCHUP_MESSAGE_TYPES, POLL_INTERVAL_MS, RECONNECT_BASE_MS, UUID_RE4, RECONNECT_MAX_MS, PENDING_POLL_INTERVAL_MS, HISTORY_RESTORE_TIMEOUT_MS2, HISTORY_UPLOAD_TIMEOUT_MS, CANONICAL_TIMESTAMP_RE, OUTBOUND_DEDUPE_WINDOW_MS, OUTBOUND_DEDUPE_MAX_SUPPRESS_MS, OUTBOUND_DEDUPE_MAX, OUTBOUND_DEDUPE_TYPES, RETRY_CANDIDATE_TTL_MS, RETRY_CANDIDATE_MAX, TOPIC_ID_RE, ROOM_FULFIL_COOLDOWN_MS, SecureChannel, init_channel, init_types, DEFAULT_API_URL, DEFAULT_HTTP_PORT, init_account_config, init_lifecycle, _ocRuntime, _channels, agentVaultPlugin, init_openclaw_plugin, init_gateway_send, init_llm_response_parser, OPENROUTER_PRICING, init_llm_pricing_openrouter, LEGACY_PRICING, PRICING, init_llm_cost, traceStore, init_fetch_interceptor, init_tool_audit, init_harness_compat, managedRoutesRequested, init_openclaw_entry, util, objectUtil, ZodParsedType, getParsedType, init_util, ZodIssueCode, ZodError, init_ZodError, errorMap, en_default, init_en, overrideErrorMap, init_errors2, makeIssue, ParseStatus, INVALID, DIRTY, OK, isAborted, isDirty, isValid, isAsync, init_parseUtil, init_typeAliases, errorUtil, init_errorUtil, ParseInputLazyPath, handleResult, ZodType, cuidRegex, cuid2Regex, ulidRegex, uuidRegex, nanoidRegex, jwtRegex, durationRegex, emailRegex, _emojiRegex, emojiRegex, ipv4Regex, ipv4CidrRegex, ipv6Regex, ipv6CidrRegex, base64Regex, base64urlRegex, dateRegexSource, dateRegex, ZodString, ZodNumber, ZodBigInt, ZodBoolean, ZodDate, ZodSymbol, ZodUndefined, ZodNull, ZodAny, ZodUnknown, ZodNever, ZodVoid, ZodArray, ZodObject, ZodUnion, getDiscriminator, ZodDiscriminatedUnion, ZodIntersection, ZodTuple, ZodRecord, ZodMap, ZodSet, ZodFunction, ZodLazy, ZodLiteral, ZodEnum, ZodNativeEnum, ZodPromise, ZodEffects, ZodOptional, ZodNullable, ZodDefault, ZodCatch, ZodNaN, ZodBranded, ZodPipeline, ZodReadonly, late, ZodFirstPartyTypeKind, stringType, numberType, nanType, bigIntType, booleanType, dateType, symbolType, undefinedType, nullType, anyType, unknownType, neverType, voidType, arrayType, objectType, strictObjectType, unionType, discriminatedUnionType, intersectionType, tupleType, recordType, mapType, setType, functionType, lazyType, literalType, enumType, nativeEnumType, promiseType, effectsType, optionalType, nullableType, preprocessType, pipelineType, init_types2, init_external, init_v3, util_exports, Cached, EVALUATING, captureStackTrace, allowsEval, getParsedType2, propertyKeyTypes, primitiveTypes, NUMBER_FORMAT_RANGES, BIGINT_FORMAT_RANGES, highSurrogate, Class, installing, broke, breaker, CONSTANT_CATCH, init_util2, _a2, _zodDesc, _E, $ZodAsyncError, $ZodEncodeError, globalConfig, init_core, _messageDesc, _issuesDesc, _installedToString, initializer, $ZodError, $ZodRealError, init_errors3, _parse, parse, _parseAsync, parseAsync, _safeParse, safeParse, _safeParseAsync, safeParseAsync, COMPILE_INVALID, COMPILE_FALLBACK, validate, validateAsync, _encode, _decode, _encodeAsync, _decodeAsync, _safeEncode, _safeDecode, _safeEncodeAsync, _safeDecodeAsync, init_parse, cuid, cuid2, ulid, xid, ksuid, nanoid, duration, guid, uuid, email, _emoji, ipv4, ipv6, cidrv4, cidrv6, base64, base64url, httpProtocol, e164, dateSource, date, anyString, integer, number, boolean, _null, lowercase, uppercase, init_regexes, $ZodCheck, _whenHasLength, numericOriginMap, $ZodCheckLessThan, $ZodCheckGreaterThan, $ZodCheckMultipleOf, $ZodCheckNumberFormat, $ZodCheckMaxLength, $ZodCheckMinLength, $ZodCheckLengthEquals, $ZodCheckStringFormat, $ZodCheckRegex, $ZodCheckLowerCase, $ZodCheckUpperCase, $ZodCheckIncludes, $ZodCheckStartsWith, $ZodCheckEndsWith, $ZodCheckOverwrite, init_checks, Doc, init_doc, version, init_versions, $ZodType, toStandardResult, $ZodString, $ZodStringFormat, $ZodGUID, $ZodUUID, $ZodEmail, URL_BAD_FORMAT, URL_UNPARSEABLE, asciiTabOrNewline, $ZodURL, $ZodEmoji, $ZodNanoID, $ZodCUID, $ZodCUID2, $ZodULID, $ZodXID, $ZodKSUID, $ZodISODateTime, $ZodISODate, $ZodISOTime, $ZodISODuration, $ZodIPv4, ipv6Alphabet, $ZodIPv6, $ZodCIDRv4, $ZodCIDRv6, base64Charset, $ZodBase64, base64urlCharset, $ZodBase64URL, $ZodE164, $ZodJWT, $ZodNumber, $ZodNumberFormat, $ZodBoolean, $ZodNull, $ZodUnknown, $ZodNever, arraySize, $ZodArray, NO_SYMBOL_KEYS, $ZodObject, $ZodObjectJIT, $ZodUnion, $ZodDiscriminatedUnion, $ZodIntersection, $ZodRecord, $ZodEnum, $ZodLiteral, $ZodTransform, $ZodOptional, $ZodExactOptional, $ZodNullable, $ZodDefault, $ZodPrefault, $ZodNonOptional, $ZodCatch, $ZodPipe, $ZodPreprocess, $ZodReadonly, $ZodCustom, init_schemas, $ZodCyclicError, STATE, NO_ISSUES, recursive, NONE, ASSUMED, PROVEN, handoff, open4, memo, init_memoizer, error, init_en2, init_locales, _a3, $ZodRegistry, globalRegistry, init_registries, init_compile, init_api, FOLDABLE_KEYS, UNION_KEYS, createToJSONSchemaMethod, createStandardJSONSchemaMethod, init_to_json_schema, narrowMin, narrowMax, narrowBoth, addDivisor, addPattern, intersectMime, setFormat, minContributor, maxContributor, formatContributor, contributors, formatMap, exactPatterns, exactPattern, stringProcessor, numberProcessor, booleanProcessor, bigintProcessor, symbolProcessor, nullProcessor, undefinedProcessor, voidProcessor, neverProcessor, anyProcessor, unknownProcessor, dateProcessor, enumProcessor, literalProcessor, nanProcessor, templateLiteralProcessor, fileProcessor, successProcessor, customProcessor, functionProcessor, transformProcessor, mapProcessor, setProcessor, arrayProcessor, objectProcessor, unionProcessor, intersectionProcessor, tupleProcessor, pendingRecords, recordProcessor, nullableProcessor, nonoptionalProcessor, UNREPRESENTABLE_DEFAULT, defaultProcessor, prefaultProcessor, catchProcessor, pipeProcessor, readonlyProcessor, promiseProcessor, optionalProcessor, lazyProcessor, allProcessors, init_json_schema_processors, init_json_schema, init_core2, init_parse2, ZodMiniType, ZodMiniObject, init_schemas2, init_checks2, init_iso, init_coerce, init_external2, init_v4_mini, init_zod_compat, init_checks3, _installedErrorProtos, initializer2, ZodRealError, init_errors4, parse2, parseAsync2, safeParse3, safeParseAsync3, encode3, decode2, encodeAsync2, decodeAsync2, safeEncode2, safeDecode2, safeEncodeAsync2, safeDecodeAsync2, init_parse3, ZodType2, _ZodString, ZodString2, ZodStringFormat, ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration, ZodEmail, ZodGUID, ZodUUID, ZodURL, ZodEmoji, ZodNanoID, ZodCUID, ZodCUID2, ZodULID, ZodXID, ZodKSUID, ZodIPv4, ZodIPv6, ZodCIDRv4, ZodCIDRv6, ZodBase64, ZodBase64URL, ZodE164, ZodJWT, ZodNumber2, ZodNumberFormat, ZodBoolean2, ZodNull2, ZodUnknown2, ZodNever2, ZodArray2, ZodObject2, ZodUnion2, ZodDiscriminatedUnion2, ZodIntersection2, ZodRecord2, ZodEnum2, ZodLiteral2, ZodTransform, ZodOptional2, ZodExactOptional, ZodNullable2, ZodDefault2, ZodPrefault, ZodNonOptional, ZodCatch2, ZodPipe, ZodPreprocess, ZodReadonly2, ZodCustom, init_schemas3, ZodFirstPartyTypeKind2, init_compat, iso_exports2, init_iso2, init_coerce2, init_external3, init_classic, init_v4, LATEST_PROTOCOL_VERSION, DEFAULT_NEGOTIATED_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, RELATED_TASK_META_KEY, JSONRPC_VERSION, AssertObjectSchema, ProgressTokenSchema, CursorSchema, TaskCreationParamsSchema, TaskMetadataSchema, RelatedTaskMetadataSchema, RequestMetaSchema, BaseRequestParamsSchema, TaskAugmentedRequestParamsSchema, isTaskAugmentedRequestParams, RequestSchema, NotificationsParamsSchema, NotificationSchema, ResultSchema, RequestIdSchema, JSONRPCRequestSchema, isJSONRPCRequest, JSONRPCNotificationSchema, isJSONRPCNotification, JSONRPCResultResponseSchema, isJSONRPCResultResponse, ErrorCode, JSONRPCErrorResponseSchema, isJSONRPCErrorResponse, JSONRPCMessageSchema, JSONRPCResponseSchema, EmptyResultSchema, CancelledNotificationParamsSchema, CancelledNotificationSchema, IconSchema, IconsSchema, BaseMetadataSchema, ImplementationSchema, FormElicitationCapabilitySchema, ElicitationCapabilitySchema, ClientTasksCapabilitySchema, ServerTasksCapabilitySchema, ClientCapabilitiesSchema, InitializeRequestParamsSchema, InitializeRequestSchema, isInitializeRequest, ServerCapabilitiesSchema, InitializeResultSchema, InitializedNotificationSchema, PingRequestSchema, ProgressSchema, ProgressNotificationParamsSchema, ProgressNotificationSchema, PaginatedRequestParamsSchema, PaginatedRequestSchema, PaginatedResultSchema, TaskStatusSchema, TaskSchema, CreateTaskResultSchema, TaskStatusNotificationParamsSchema, TaskStatusNotificationSchema, GetTaskRequestSchema, GetTaskResultSchema, GetTaskPayloadRequestSchema, GetTaskPayloadResultSchema, ListTasksRequestSchema, ListTasksResultSchema, CancelTaskRequestSchema, CancelTaskResultSchema, ResourceContentsSchema, TextResourceContentsSchema, Base64Schema, BlobResourceContentsSchema, RoleSchema, AnnotationsSchema, ResourceSchema, ResourceTemplateSchema, ListResourcesRequestSchema, ListResourcesResultSchema, ListResourceTemplatesRequestSchema, ListResourceTemplatesResultSchema, ResourceRequestParamsSchema, ReadResourceRequestParamsSchema, ReadResourceRequestSchema, ReadResourceResultSchema, ResourceListChangedNotificationSchema, SubscribeRequestParamsSchema, SubscribeRequestSchema, UnsubscribeRequestParamsSchema, UnsubscribeRequestSchema, ResourceUpdatedNotificationParamsSchema, ResourceUpdatedNotificationSchema, PromptArgumentSchema, PromptSchema, ListPromptsRequestSchema, ListPromptsResultSchema, GetPromptRequestParamsSchema, GetPromptRequestSchema, TextContentSchema, ImageContentSchema, AudioContentSchema, ToolUseContentSchema, EmbeddedResourceSchema, ResourceLinkSchema, ContentBlockSchema, PromptMessageSchema, GetPromptResultSchema, PromptListChangedNotificationSchema, ToolAnnotationsSchema, ToolExecutionSchema, ToolSchema, ListToolsRequestSchema, ListToolsResultSchema, CallToolResultSchema, CompatibilityCallToolResultSchema, CallToolRequestParamsSchema, CallToolRequestSchema, ToolListChangedNotificationSchema, ListChangedOptionsBaseSchema, LoggingLevelSchema, SetLevelRequestParamsSchema, SetLevelRequestSchema, LoggingMessageNotificationParamsSchema, LoggingMessageNotificationSchema, ModelHintSchema, ModelPreferencesSchema, ToolChoiceSchema, ToolResultContentSchema, SamplingContentSchema, SamplingMessageContentBlockSchema, SamplingMessageSchema, CreateMessageRequestParamsSchema, CreateMessageRequestSchema, CreateMessageResultSchema, CreateMessageResultWithToolsSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema, UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema, LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema, EnumSchemaSchema, PrimitiveSchemaDefinitionSchema, ElicitRequestFormParamsSchema, ElicitRequestURLParamsSchema, ElicitRequestParamsSchema, ElicitRequestSchema, ElicitationCompleteNotificationParamsSchema, ElicitationCompleteNotificationSchema, ElicitResultSchema, ResourceTemplateReferenceSchema, PromptReferenceSchema, CompleteRequestParamsSchema, CompleteRequestSchema, CompleteResultSchema, RootSchema, ListRootsRequestSchema, ListRootsResultSchema, RootsListChangedNotificationSchema, ClientRequestSchema, ClientNotificationSchema, ClientResultSchema, ServerRequestSchema, ServerNotificationSchema, ServerResultSchema, McpError, UrlElicitationRequiredError, init_types3, init_interfaces, ignoreOverride, defaultOptions, getDefaultOptions, init_Options, getRefs, init_Refs, init_errorMessages, getRelativePath, init_getRelativePath, init_any, init_array2, init_bigint, init_boolean, init_branded, parseCatchDef, init_catch, integerDateParser, init_date, init_default, init_effects, init_enum, isJsonSchema7AllOfType, init_intersection, init_literal, emojiRegex2, zodPatterns, ALPHA_NUMERIC, init_string2, init_record, init_map, init_nativeEnum, init_never, init_null, primitiveMappings, asAnyOf, init_union, init_nullable, init_number2, init_object, parseOptionalDef, init_optional2, parsePipelineDef, init_pipeline, init_promise, init_set, init_tuple, init_undefined, init_unknown, parseReadonlyDef, init_readonly, selectParser, init_selectParser, get$ref, addMeta, init_parseDef, init_parseTypes, zodToJsonSchema, init_zodToJsonSchema, init_esm, init_zod_json_schema_compat, DEFAULT_REQUEST_TIMEOUT_MSEC, Protocol, init_protocol, require_code, require_scope, require_codegen, require_util, require_names, require_errors, require_boolSchema, require_rules, require_applicability, require_dataType, require_defaults, require_code2, require_keyword, require_subschema, require_fast_deep_equal, require_json_schema_traverse, require_resolve, require_validate, require_validation_error, require_ref_error, require_compile, require_data, require_utils, require_schemes, require_fast_uri, require_uri, require_core, require_id, require_ref, require_core2, require_limitNumber, require_multipleOf, require_ucs2length, require_limitLength, require_pattern, require_limitProperties, require_required, require_limitItems, require_equal, require_uniqueItems, require_const, require_enum, require_validation, require_additionalItems, require_items, require_prefixItems, require_items2020, require_contains, require_dependencies, require_propertyNames, require_additionalProperties, require_properties, require_patternProperties, require_not, require_anyOf, require_oneOf, require_allOf, require_if, require_thenElse, require_applicator, require_format, require_format2, require_metadata, require_draft7, require_types, require_discriminator, require_json_schema_draft_07, require_ajv, require_formats, require_limit, require_dist, import_ajv, import_ajv_formats, AjvJsonSchemaValidator, init_ajv_provider, ExperimentalServerTasks, init_server, init_helpers, Server, init_server2, COMPLETABLE_SYMBOL, McpZodTypeKind, init_completable, init_uriTemplate, TOOL_NAME_REGEX, init_toolNameValidation, ExperimentalMcpServerTasks, init_mcp_server, init_zod, McpServer, EMPTY_OBJECT_JSON_SCHEMA, EMPTY_COMPLETION_RESULT, init_mcp, RequestError, toRequestError, GlobalRequest, Request2, newHeadersFromIncoming, wrapBodyStream, newRequestFromIncoming, getRequestCache, requestCache, incomingKey, urlKey, headersKey, abortControllerKey, getAbortController, requestPrototype, newRequest, responseCache, getResponseCache, cacheKey, GlobalResponse, Response2, buildOutgoingHttpHeaders, X_ALREADY_SENT, outgoingEnded, handleRequestError, handleFetchError, handleResponseError, flushHeaders, responseViaCache, isPromise, responseViaResponseObject, getRequestListener, init_dist22, require_content_type, import_content_type, init_mediaType, DEFAULT_MAX_REQUEST_BODY_SIZE, MAX_BATCH_SIZE, init_requestBody, DEFAULT_SSE_KEEP_ALIVE_MS, MAX_TIMER_DELAY_MS, init_sseKeepAlive, WebStandardStreamableHTTPServerTransport, init_webStandardStreamableHttp, StreamableHTTPServerTransport, init_streamableHttp, AgentVaultMcpServer, init_mcp_server2, init_mcp_handlers, init_skill_manifest, init_skill_invoker, spanBuffer, init_skill_telemetry, PolicyEnforcer, init_policy_enforcer, VERSION, init_index;
17634
17647
  var init_dist = __esm({
17635
17648
  async "../plugin/dist/index.js"() {
17636
17649
  "use strict";
@@ -69611,6 +69624,34 @@ var init_dist = __esm({
69611
69624
  }
69612
69625
  return null;
69613
69626
  }
69627
+ /**
69628
+ * Every occupied leaf of the ratchet tree, with its basic-credential
69629
+ * identity — READ-ONLY (#470 phase 1).
69630
+ *
69631
+ * Stale-leaf detection compares the tree with the server's eligible set, so
69632
+ * it must see EVERY leaf. `memberLeafIndex` cannot: it stops at the first
69633
+ * match, so a device holding two leaves (the duplicate-add shape observed
69634
+ * live 2026-06-18) would show one. Blank leaves (removed members) are
69635
+ * skipped; duplicates are returned once per leaf. Leaves whose credential is
69636
+ * not `basic` carry no comparable identity and are skipped too — the web
69637
+ * client only ever mints basic credentials.
69638
+ *
69639
+ * Identities are COPIES: a caller mutating one cannot reach the tree.
69640
+ */
69641
+ leafIdentities() {
69642
+ const tree = this._requireState().ratchetTree;
69643
+ const out = [];
69644
+ for (let nodeIndex = 0; nodeIndex < tree.length; nodeIndex += 2) {
69645
+ const node2 = tree[nodeIndex];
69646
+ if (node2 && node2.nodeType === "leaf") {
69647
+ const cred = node2.leaf.credential;
69648
+ if (cred.credentialType === "basic") {
69649
+ out.push({ leafIndex: nodeIndex / 2, identity: new Uint8Array(cred.identity) });
69650
+ }
69651
+ }
69652
+ }
69653
+ return out;
69654
+ }
69614
69655
  // -------------------------------------------------------------------------
69615
69656
  // Encrypt / Decrypt
69616
69657
  // -------------------------------------------------------------------------
@@ -70564,6 +70605,7 @@ var init_dist = __esm({
70564
70605
  OUTBOUND_DEDUPE_TYPES = /* @__PURE__ */ new Set(["text", "status_alert", "artifact", "attachment"]);
70565
70606
  RETRY_CANDIDATE_TTL_MS = 6e4;
70566
70607
  RETRY_CANDIDATE_MAX = 32;
70608
+ TOPIC_ID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
70567
70609
  ROOM_FULFIL_COOLDOWN_MS = 6e4;
70568
70610
  SecureChannel = class _SecureChannel extends EventEmitter {
70569
70611
  constructor(config2) {
@@ -70617,6 +70659,7 @@ var init_dist = __esm({
70617
70659
  _trustTier = null;
70618
70660
  _trustTokenExpiresAt = null;
70619
70661
  _trustTokenInterval = null;
70662
+ _trustTokenUnavailableUntil = 0;
70620
70663
  _pendingPollTimer = null;
70621
70664
  _syncMessageIds = null;
70622
70665
  _deliveryHeartbeat = null;
@@ -70789,8 +70832,15 @@ ${text}`;
70789
70832
  _scanEngine = null;
70790
70833
  _scanRuleSetVersion = 0;
70791
70834
  _telemetryReporter = null;
70792
- /** Topic ID from the most recent inbound message — used as fallback for replies. */
70793
- _lastIncomingTopicId;
70835
+ /**
70836
+ * #1416: topic of the most recent inbound message, PER conversation group —
70837
+ * the fallback for a reply that names no topic. Keyed by `_topicScope()`:
70838
+ * `g:<group>` normally, `c:<conversation>` for a conversation whose group is
70839
+ * not known yet, `*` for a legacy agent that knows no groups at all. It used
70840
+ * to be one value for the whole agent, so a broadcast into person B's group
70841
+ * carried the topic of person A's last message. In memory only, as before.
70842
+ */
70843
+ _lastIncomingTopics = /* @__PURE__ */ new Map();
70794
70844
  /** Room ID from the most recent inbound room message — used as fallback for HTTP /send replies. */
70795
70845
  _lastInboundRoomId;
70796
70846
  /** Rate-limit: last resync_request timestamp per conversation (5-min cooldown). */
@@ -70832,6 +70882,7 @@ ${text}`;
70832
70882
  static SILENCE_TIMEOUT_MS = 9e4;
70833
70883
  static POLL_FALLBACK_INTERVAL_MS = 3e4;
70834
70884
  // 30s when messages found
70885
+ static TRUST_TOKEN_UNAVAILABLE_BACKOFF_MS = 6 * 60 * 60 * 1e3;
70835
70886
  static POLL_FALLBACK_IDLE_MS = 6e4;
70836
70887
  // 60s when idle
70837
70888
  /**
@@ -71367,13 +71418,76 @@ ${text}`;
71367
71418
  }
71368
71419
  return `${kind}:${id ?? ""}`;
71369
71420
  }
71421
+ /*
71422
+ * #1416 — DM history is partitioned by conversation GROUP.
71423
+ *
71424
+ * Since #1399 every person has their own 1:1 group with the agent, but the
71425
+ * agent kept one DM history pool: a catch-up request or a session_init
71426
+ * replay from person B's group was answered with person A's plaintext too.
71427
+ * A DM entry's context now names its group:
71428
+ *
71429
+ * dm:g:<groupId>:<topicId> — the group is known
71430
+ * dm:c:<convId>:<topicId> — the conversation's group is not known yet
71431
+ * dm:<topicId> — legacy (pre-#1416): the PRIMARY group's
71432
+ *
71433
+ * Every form keeps the `dm:` prefix the archive, the web client and Hermes
71434
+ * test for, and the archive format (`topicId` is a free string) is unchanged.
71435
+ * An agent that knows at most one group selects exactly what it did before.
71436
+ */
71437
+ /** The DM history context for a message in `gid` (or `convId`'s group). */
71438
+ _dmHistoryContext(topicId, gid, convId) {
71439
+ const g2 = gid ?? (convId ? this._sessionGroupIds.get(convId) : void 0);
71440
+ if (g2) return `dm:g:${g2}:${topicId ?? ""}`;
71441
+ if (convId && this._knownDmGroups().size > 0) return `dm:c:${convId}:${topicId ?? ""}`;
71442
+ const legacyTopic = topicId && /^[gc]:/.test(topicId) ? "" : topicId;
71443
+ return this._historyContext("dm", legacyTopic);
71444
+ }
71445
+ /** Every conversation group this agent knows of. */
71446
+ _knownDmGroups() {
71447
+ const known = new Set(this._sessionGroupIds.values());
71448
+ if (this._persisted?.groupId) known.add(this._persisted.groupId);
71449
+ return known;
71450
+ }
71451
+ /** The group a DM history entry belongs to (see the forms above). */
71452
+ _dmEntryScope(entry, known) {
71453
+ const t2 = entry.topicId ?? "";
71454
+ let scope;
71455
+ if (t2.startsWith("dm:g:")) {
71456
+ scope = t2.slice("dm:g:".length).split(":")[0];
71457
+ } else if (t2.startsWith("dm:c:")) {
71458
+ const conv = t2.slice("dm:c:".length).split(":")[0];
71459
+ scope = this._sessionGroupIds.get(conv) ?? `c:${conv}`;
71460
+ } else {
71461
+ scope = this._persisted?.groupId;
71462
+ }
71463
+ if ((scope === void 0 || scope.startsWith("c:")) && known.size === 1) {
71464
+ return [...known][0];
71465
+ }
71466
+ return scope;
71467
+ }
71468
+ /**
71469
+ * The group a DM history request is answered from, or `null` for "every DM
71470
+ * entry" (an agent that knows no groups at all — the old behaviour). A
71471
+ * request whose group cannot be told fails closed to its own conversation.
71472
+ */
71473
+ _dmRequestScope(gid, convId, known) {
71474
+ if (known.size === 0) return null;
71475
+ const g2 = gid ?? (convId ? this._sessionGroupIds.get(convId) : void 0);
71476
+ if (g2) return g2;
71477
+ const isPrimaryConv = convId === void 0 || convId === this._primaryConversationId;
71478
+ if (known.size === 1 && isPrimaryConv) return [...known][0];
71479
+ if (convId && convId === this._primaryConversationId && this._persisted?.groupId) {
71480
+ return this._persisted.groupId;
71481
+ }
71482
+ return `c:${convId ?? ""}`;
71483
+ }
71370
71484
  /**
71371
71485
  * Normalize one accepted application envelope before it enters plaintext
71372
71486
  * history. Protocol/control types and empty attachment-only envelopes are
71373
71487
  * never archived, and attachment key material can never become the fallback
71374
71488
  * text.
71375
71489
  */
71376
- async _captureHistoryApplication(sender, rawPlaintext, kind, id, transportTimestamp, declaredType = "message") {
71490
+ async _captureHistoryApplication(sender, rawPlaintext, kind, id, transportTimestamp, declaredType = "message", dmScope) {
71377
71491
  let messageType = declaredType;
71378
71492
  let text = rawPlaintext;
71379
71493
  try {
@@ -71388,14 +71502,14 @@ ${text}`;
71388
71502
  await this._appendHistory(
71389
71503
  sender,
71390
71504
  text,
71391
- this._historyContext(kind, id),
71505
+ kind === "dm" ? this._dmHistoryContext(id, dmScope?.groupId, dmScope?.conversationId) : this._historyContext(kind, id),
71392
71506
  transportTimestamp
71393
71507
  );
71394
71508
  return text;
71395
71509
  }
71396
71510
  /** Select a context before applying the optional lower bound and final cap. */
71397
- _historyForCatchup(kind, id, sinceTs) {
71398
- let filtered = this._selectHistoryContext(kind, id);
71511
+ _historyForCatchup(kind, id, sinceTs, dmScope) {
71512
+ let filtered = this._selectHistoryContext(kind, id, dmScope);
71399
71513
  if (sinceTs !== void 0 && sinceTs !== null) {
71400
71514
  if (typeof sinceTs !== "string" || !CANONICAL_TIMESTAMP_RE.test(sinceTs) || !Number.isFinite(Date.parse(sinceTs)) || new Date(Date.parse(sinceTs)).toISOString() !== sinceTs) {
71401
71515
  throw new Error("Invalid history catch-up timestamp");
@@ -71405,11 +71519,17 @@ ${text}`;
71405
71519
  return filtered.sort((a2, b2) => Date.parse(a2.ts) - Date.parse(b2.ts) || a2.id.localeCompare(b2.id)).slice(-100);
71406
71520
  }
71407
71521
  /** Shared exact routing selector for catch-up and legacy DR replay. */
71408
- _selectHistoryContext(kind, id) {
71522
+ _selectHistoryContext(kind, id, dmScope) {
71409
71523
  const history = this._persisted?.messageHistory ?? [];
71410
- return kind === "room" ? history.filter((entry) => entry.topicId === this._historyContext("room", id)) : history.filter(
71524
+ if (kind === "room") {
71525
+ return history.filter((entry) => entry.topicId === this._historyContext("room", id));
71526
+ }
71527
+ const dm = history.filter(
71411
71528
  (entry) => entry.topicId?.startsWith("dm:") === true || !entry.topicId?.startsWith("room:") && !entry.topicId?.startsWith("a2a:")
71412
71529
  );
71530
+ const known = this._knownDmGroups();
71531
+ const want = this._dmRequestScope(dmScope?.groupId, dmScope?.conversationId, known);
71532
+ return want === null ? dm : dm.filter((entry) => this._dmEntryScope(entry, known) === want);
71413
71533
  }
71414
71534
  _markHistoryDirty() {
71415
71535
  this._historyBackupScheduler.markDirty();
@@ -71899,7 +72019,9 @@ ${text}`;
71899
72019
  Promise.resolve().then(() => (init_openclaw_compat(), openclaw_compat_exports)).then(({ requestHeartbeatNow: requestHeartbeatNow2 }) => requestHeartbeatNow2({ reason: "channel-send" })).catch(() => {
71900
72020
  });
71901
72021
  const targetConvId = options?.conversationId;
71902
- const topicId = options?.topicId ?? this._lastIncomingTopicId ?? this._persisted?.defaultTopicId;
72022
+ const explicitTopicId = options?.topicId;
72023
+ const targeted = targetConvId !== void 0;
72024
+ const frameHistoryContexts = [];
71903
72025
  const messageType = options?.messageType ?? "text";
71904
72026
  const priority = options?.priority ?? "normal";
71905
72027
  const parentSpanId = options?.parentSpanId;
@@ -71966,11 +72088,12 @@ ${text}`;
71966
72088
  plaintextBytes
71967
72089
  );
71968
72090
  await saveMlsState(this.config.dataDir, entry.mlsGroupId, JSON.stringify(mlsGroup.exportState()));
72091
+ const frameTopicId = this._topicForFrame(gid, targetConvId, explicitTopicId, targeted);
71969
72092
  const payload = {
71970
72093
  group_id: entry.mlsGroupId,
71971
72094
  epoch: Number(mlsGroup.epoch),
71972
72095
  payload: Buffer.from(cipherBytes).toString("hex"),
71973
- topic_id: topicId,
72096
+ topic_id: frameTopicId,
71974
72097
  client_message_id: clientMessageId,
71975
72098
  message_type: messageType,
71976
72099
  priority,
@@ -71980,6 +72103,7 @@ ${text}`;
71980
72103
  if (this._persisted?.hubAddress) payload.hub_address = this._persisted.hubAddress;
71981
72104
  if (this._persisted?.hubId) payload.sender_hub_id = this._persisted.hubId;
71982
72105
  pendingWsSends.push(JSON.stringify({ event: "message_mls", data: payload }));
72106
+ frameHistoryContexts.push(this._dmHistoryContext(frameTopicId, gid, targetConvId));
71983
72107
  addressedMlsGroupIds.push(entry.mlsGroupId);
71984
72108
  sentSharedGroupIds.add(gid);
71985
72109
  sentCount++;
@@ -72003,6 +72127,7 @@ ${text}`;
72003
72127
  continue;
72004
72128
  }
72005
72129
  try {
72130
+ const topicId = this._topicForFrame(convGroupId, convId, explicitTopicId, targeted);
72006
72131
  const mlsGroup = (convGroupId ? this._mlsGroups.get(`1to1-group:${convGroupId}`) : null) ?? this._mlsGroups.get(`conv:${convId}`);
72007
72132
  const mlsGroupId = (convGroupId ? this._persisted?.mlsGroups?.[convGroupId]?.mlsGroupId : null) ?? this._persisted?.mlsConversations?.[convId]?.mlsGroupId;
72008
72133
  if (convGroupId && mlsGroupId && sentSharedGroupIds.has(convGroupId)) {
@@ -72044,6 +72169,7 @@ ${text}`;
72044
72169
  data: payload
72045
72170
  })
72046
72171
  );
72172
+ frameHistoryContexts.push(this._dmHistoryContext(topicId, convGroupId, convId));
72047
72173
  addressedMlsGroupIds.push(mlsGroupId);
72048
72174
  if (convGroupId) sentSharedGroupIds.add(convGroupId);
72049
72175
  } else if (!options?.bypassMlsHold && this._shouldHoldForMls(convGroupId, mlsGroup, mlsGroupId)) {
@@ -72063,7 +72189,7 @@ ${text}`;
72063
72189
  history: {
72064
72190
  id: clientMessageId,
72065
72191
  text: plaintext,
72066
- topicId: this._historyContext("dm", topicId)
72192
+ topicId: this._dmHistoryContext(topicId, convGroupId, convId)
72067
72193
  }
72068
72194
  } : {}
72069
72195
  };
@@ -72092,6 +72218,7 @@ ${text}`;
72092
72218
  data: payload
72093
72219
  })
72094
72220
  );
72221
+ frameHistoryContexts.push(this._dmHistoryContext(topicId, convGroupId, convId));
72095
72222
  } else {
72096
72223
  if (!this._persisted.outboundQueue) {
72097
72224
  this._persisted.outboundQueue = [];
@@ -72123,6 +72250,7 @@ ${text}`;
72123
72250
  continue;
72124
72251
  }
72125
72252
  try {
72253
+ const topicId = this._topicForFrame(mlsOnlyConvGroupId, mlsConvId, explicitTopicId, targeted);
72126
72254
  const plaintextBytes = new TextEncoder().encode(plaintext);
72127
72255
  const mlsOnlyGroupKey = mlsOnlyConvGroupId && this._mlsGroups.has(`1to1-group:${mlsOnlyConvGroupId}`) ? `1to1-group:${mlsOnlyConvGroupId}` : `conv:${mlsConvId}`;
72128
72256
  const cipherBytes = await this._encryptWithCatchUp(
@@ -72148,6 +72276,7 @@ ${text}`;
72148
72276
  if (this._persisted?.hubAddress) payload.hub_address = this._persisted.hubAddress;
72149
72277
  if (this._persisted?.hubId) payload.sender_hub_id = this._persisted.hubId;
72150
72278
  pendingWsSends.push(JSON.stringify({ event: "message_mls", data: payload }));
72279
+ frameHistoryContexts.push(this._dmHistoryContext(topicId, mlsOnlyConvGroupId, mlsConvId));
72151
72280
  addressedMlsGroupIds.push(resolvedMlsGroupId);
72152
72281
  sentCount++;
72153
72282
  if (mlsOnlyConvGroupId) sentSharedGroupIds.add(mlsOnlyConvGroupId);
@@ -72169,11 +72298,15 @@ ${text}`;
72169
72298
  );
72170
72299
  }
72171
72300
  let writtenFrames = 0;
72172
- for (const frame of pendingWsSends) {
72173
- if (this._sendApplicationFrame(frame)) writtenFrames += 1;
72301
+ let historyContext;
72302
+ for (const [i2, frame] of pendingWsSends.entries()) {
72303
+ if (this._sendApplicationFrame(frame)) {
72304
+ if (writtenFrames === 0) historyContext = frameHistoryContexts[i2];
72305
+ writtenFrames += 1;
72306
+ }
72174
72307
  }
72175
72308
  if (!options?.isResend && messageType === "text" && writtenFrames > 0) {
72176
- await this._appendHistory("agent", plaintext, this._historyContext("dm", topicId), void 0, clientMessageId);
72309
+ await this._appendHistory("agent", plaintext, historyContext ?? this._historyContext("dm"), void 0, clientMessageId);
72177
72310
  }
72178
72311
  if (writtenFrames > 0) {
72179
72312
  console.log(
@@ -72229,7 +72362,7 @@ ${text}`;
72229
72362
  */
72230
72363
  sendActivitySpan(spanData) {
72231
72364
  if (!this._ws || this._ws.readyState !== WebSocket.OPEN) return;
72232
- const pluginVersion = true ? "0.23.49" : "0.0.0-dev";
72365
+ const pluginVersion = true ? "0.23.51" : "0.0.0-dev";
72233
72366
  const agentName = this.config.agentName ?? "Agent";
72234
72367
  const resource = {
72235
72368
  "service.name": "agentvault-agent",
@@ -72714,6 +72847,16 @@ ${text}`;
72714
72847
  );
72715
72848
  if (mine.length === 0) return false;
72716
72849
  const before = this._persisted.groupId;
72850
+ const primaryBefore = this._persisted.primaryConversationId;
72851
+ const knownBefore = this._knownDmGroups();
72852
+ const ownersBefore = /* @__PURE__ */ new Set();
72853
+ if (before) {
72854
+ for (const [convId, gid] of this._sessionGroupIds) {
72855
+ if (gid !== before) continue;
72856
+ const owner = this._sessions.get(convId)?.ownerDeviceId ?? this._persisted.sessions?.[convId]?.ownerDeviceId;
72857
+ if (owner) ownersBefore.add(owner);
72858
+ }
72859
+ }
72717
72860
  this._sessionGroupIds = new Map(mine.map((r2) => [r2.id, r2.group_id]));
72718
72861
  this._persisted.conversationGroupIds = Object.fromEntries(this._sessionGroupIds);
72719
72862
  const joined = mine.find((r2) => this._persisted.mlsGroups?.[r2.group_id]);
@@ -72725,6 +72868,23 @@ ${text}`;
72725
72868
  }
72726
72869
  this._persisted.groupId = primary.group_id;
72727
72870
  this._persisted.primaryConversationId = primary.id;
72871
+ for (const r2 of mine) {
72872
+ if (typeof r2.default_topic_id === "string") this._recordDefaultTopic(r2.group_id, r2.default_topic_id);
72873
+ }
72874
+ const primaryDefault = this._persisted.defaultTopicIds?.[primary.group_id];
72875
+ if (primaryDefault) this._persisted.defaultTopicId = primaryDefault;
72876
+ const primaryOwner = primary.owner_device_id;
72877
+ const samePerson = primary.id === primaryBefore || typeof primaryOwner === "string" && ownersBefore.has(primaryOwner);
72878
+ let retagged = false;
72879
+ if (before && primary.group_id !== before && knownBefore.size === 1 && knownBefore.has(before) && samePerson) {
72880
+ const oldPrefix = `dm:g:${before}:`;
72881
+ for (const entry of this._persisted.messageHistory ?? []) {
72882
+ if (entry.topicId?.startsWith(oldPrefix)) {
72883
+ entry.topicId = `dm:g:${primary.group_id}:${entry.topicId.slice(oldPrefix.length)}`;
72884
+ retagged = true;
72885
+ }
72886
+ }
72887
+ }
72728
72888
  const liveGroupIds = new Set(mine.map((r2) => r2.group_id));
72729
72889
  if (staleGid && staleMlsGroupId && !liveGroupIds.has(staleGid)) {
72730
72890
  try {
@@ -72739,6 +72899,10 @@ ${text}`;
72739
72899
  });
72740
72900
  }
72741
72901
  await this._persistState();
72902
+ if (retagged) {
72903
+ this._markHistoryDirty();
72904
+ await this._saveHistoryState();
72905
+ }
72742
72906
  console.log(
72743
72907
  `[SecureChannel] Re-resolved conversation groups ${staleMlsGroupId ? `after 'unknown group' ${staleMlsGroupId.slice(0, 8)}` : "on connect (#1034)"}: primary group ${String(before).slice(0, 8)} \u2192 ${this._persisted.groupId.slice(0, 8)} (${mine.length} active conversation(s))`
72744
72908
  );
@@ -73262,6 +73426,7 @@ ${text}`;
73262
73426
  return this._trustTokenExpiresAt;
73263
73427
  }
73264
73428
  async refreshTrustToken() {
73429
+ if (Date.now() < this._trustTokenUnavailableUntil) return;
73265
73430
  try {
73266
73431
  const res = await fetch(`${this.config.apiUrl}/api/v1/gate/token`, {
73267
73432
  method: "POST",
@@ -73275,12 +73440,15 @@ ${text}`;
73275
73440
  this._trustToken = data.token;
73276
73441
  this._trustTier = data.tier;
73277
73442
  this._trustTokenExpiresAt = data.expires_at;
73443
+ } else if (res.status === 503 || res.status === 404 || res.status === 403) {
73444
+ this._trustTokenUnavailableUntil = Date.now() + _SecureChannel.TRUST_TOKEN_UNAVAILABLE_BACKOFF_MS;
73278
73445
  }
73279
73446
  } catch (err) {
73280
73447
  console.warn("[AgentVault] Trust token refresh failed:", err);
73281
73448
  }
73282
73449
  }
73283
73450
  startTrustTokenRefresh() {
73451
+ this.stopTrustTokenRefresh();
73284
73452
  this.refreshTrustToken();
73285
73453
  this._trustTokenInterval = setInterval(
73286
73454
  () => this.refreshTrustToken(),
@@ -73468,15 +73636,105 @@ ${text}`;
73468
73636
  return this._mcpServer;
73469
73637
  }
73470
73638
  // --- Topic management ---
73639
+ /*
73640
+ * #1416 — topics are per conversation GROUP.
73641
+ *
73642
+ * Since #1399 every person has their own 1:1 group with the agent, and a
73643
+ * topic belongs to exactly one group (`topics.group_id`). The agent used to
73644
+ * keep ONE default topic (the primary group's) and ONE last-incoming topic,
73645
+ * and stamped both on every frame — so a reply into person B's group could
73646
+ * carry person A's topic, and B's web client (which filters live messages by
73647
+ * the topic it is viewing) dropped it until a reload.
73648
+ *
73649
+ * The rule now: a frame's topic comes from THAT frame's group. A group with
73650
+ * no known topic gets none — the server then files the message under that
73651
+ * conversation's own default topic (`ws.py`, lazily created) — rather than
73652
+ * borrowing another group's.
73653
+ */
73654
+ /** Scope key for per-group topic state; see `_lastIncomingTopics`. */
73655
+ _topicScope(gid, convId) {
73656
+ if (gid) return `g:${gid}`;
73657
+ if (!this._persisted?.groupId && this._sessionGroupIds.size === 0) return "*";
73658
+ return convId ? `c:${convId}` : void 0;
73659
+ }
73660
+ /** Record the topic of an inbound 1:1 message for its own group (#1416). */
73661
+ _rememberIncomingTopic(convId, gid, topicId) {
73662
+ const scope = this._topicScope(gid ?? (convId ? this._sessionGroupIds.get(convId) : void 0), convId);
73663
+ if (!scope) return;
73664
+ if (topicId && !isTopicId(topicId)) return;
73665
+ if (topicId) this._lastIncomingTopics.set(scope, topicId);
73666
+ else this._lastIncomingTopics.delete(scope);
73667
+ }
73471
73668
  /**
73472
- * Create a new topic within the conversation group.
73473
- * Requires the channel to be initialized with a groupId (from activation).
73669
+ * Record a group's default topic (#1416). The legacy `defaultTopicId` keeps
73670
+ * mirroring the PRIMARY group's entry, for older readers and backups.
73474
73671
  */
73475
- async createTopic(name) {
73672
+ _recordDefaultTopic(gid, topicId) {
73673
+ if (!gid || !topicId || !this._persisted) return;
73674
+ (this._persisted.defaultTopicIds ??= {})[gid] = topicId;
73675
+ if (gid === this._persisted.groupId) this._persisted.defaultTopicId = topicId;
73676
+ }
73677
+ /** The group a topic is known to belong to, if any. */
73678
+ _groupOfTopic(topicId) {
73679
+ const p2 = this._persisted;
73680
+ for (const [gid, tid] of Object.entries(p2?.defaultTopicIds ?? {})) {
73681
+ if (tid === topicId) return gid;
73682
+ }
73683
+ if (p2?.defaultTopicId === topicId && p2.groupId) return p2.groupId;
73684
+ for (const t2 of p2?.topics ?? []) {
73685
+ if (t2.id === topicId) return t2.groupId ?? p2?.groupId;
73686
+ }
73687
+ for (const [scope, tid] of this._lastIncomingTopics) {
73688
+ if (tid === topicId && scope.startsWith("g:")) return scope.slice(2);
73689
+ }
73690
+ return void 0;
73691
+ }
73692
+ /**
73693
+ * The topic one outgoing 1:1 frame carries (#1416), or `undefined` to send
73694
+ * none. `gid` is the frame's conversation group (looked up from `convId`
73695
+ * when not given); `explicit` is the caller's `topicId`; `targeted` is true
73696
+ * when the caller addressed one conversation.
73697
+ */
73698
+ _topicForFrame(gid, convId, explicit, targeted, useLastIncoming = true) {
73699
+ const p2 = this._persisted;
73700
+ const g2 = gid ?? (convId ? this._sessionGroupIds.get(convId) : void 0);
73701
+ const primaryScope = g2 !== void 0 ? g2 === p2?.groupId : convId === this._primaryConversationId || !p2?.groupId;
73702
+ if (isTopicId(explicit)) {
73703
+ const owner = this._groupOfTopic(explicit);
73704
+ if (owner !== void 0 ? owner === g2 : targeted || primaryScope) return explicit;
73705
+ }
73706
+ const scope = this._topicScope(g2, convId);
73707
+ const last = scope && useLastIncoming ? this._lastIncomingTopics.get(scope) : void 0;
73708
+ if (last) return last;
73709
+ if (g2 && p2?.defaultTopicIds?.[g2]) return p2.defaultTopicIds[g2];
73710
+ if (primaryScope && p2?.defaultTopicId) return p2.defaultTopicId;
73711
+ return void 0;
73712
+ }
73713
+ /**
73714
+ * The conversation group a topic call addresses (#1416): the named
73715
+ * conversation's own group, else the primary group. A named conversation
73716
+ * whose group is unknown is an error — falling back to the primary group
73717
+ * would create/list topics in somebody else's chat.
73718
+ */
73719
+ _topicGroupFor(conversationId) {
73720
+ if (conversationId) {
73721
+ const gid = this._sessionGroupIds.get(conversationId);
73722
+ if (!gid) throw new Error("Conversation group unknown for topic call");
73723
+ return gid;
73724
+ }
73476
73725
  if (!this._persisted?.groupId) {
73477
73726
  throw new Error("Channel not initialized or groupId unknown");
73478
73727
  }
73479
- if (!this._deviceJwt) {
73728
+ return this._persisted.groupId;
73729
+ }
73730
+ /**
73731
+ * Create a new topic within a conversation group — the given conversation's
73732
+ * own group (#1416), or the primary group when none is named.
73733
+ * Requires the channel to be initialized with a groupId (from activation).
73734
+ */
73735
+ async createTopic(name, options) {
73736
+ const groupId = this._topicGroupFor(options?.conversationId);
73737
+ if (!this._deviceJwt || !this._persisted) {
73480
73738
  throw new Error("Channel not authenticated");
73481
73739
  }
73482
73740
  const res = await fetch(`${this.config.apiUrl}/api/v1/topics`, {
@@ -73486,7 +73744,7 @@ ${text}`;
73486
73744
  Authorization: `Bearer ${this._deviceJwt}`
73487
73745
  },
73488
73746
  body: JSON.stringify({
73489
- group_id: this._persisted.groupId,
73747
+ group_id: groupId,
73490
73748
  name,
73491
73749
  creator_device_id: this._persisted.deviceId
73492
73750
  })
@@ -73500,23 +73758,23 @@ ${text}`;
73500
73758
  if (!this._persisted.topics) {
73501
73759
  this._persisted.topics = [];
73502
73760
  }
73503
- this._persisted.topics.push(topic);
73761
+ this._persisted.topics.push({ ...topic, groupId });
73762
+ if (topic.isDefault) this._recordDefaultTopic(groupId, topic.id);
73504
73763
  await this._persistState();
73505
73764
  return topic;
73506
73765
  }
73507
73766
  /**
73508
- * List all topics in the conversation group.
73767
+ * List all topics in a conversation group — the given conversation's own
73768
+ * group (#1416), or the primary group when none is named.
73509
73769
  * Requires the channel to be initialized with a groupId (from activation).
73510
73770
  */
73511
- async listTopics() {
73512
- if (!this._persisted?.groupId) {
73513
- throw new Error("Channel not initialized or groupId unknown");
73514
- }
73515
- if (!this._deviceJwt) {
73771
+ async listTopics(options) {
73772
+ const groupId = this._topicGroupFor(options?.conversationId);
73773
+ if (!this._deviceJwt || !this._persisted) {
73516
73774
  throw new Error("Channel not authenticated");
73517
73775
  }
73518
73776
  const res = await fetch(
73519
- `${this.config.apiUrl}/api/v1/topics?group_id=${encodeURIComponent(this._persisted.groupId)}`,
73777
+ `${this.config.apiUrl}/api/v1/topics?group_id=${encodeURIComponent(groupId)}`,
73520
73778
  {
73521
73779
  headers: {
73522
73780
  Authorization: `Bearer ${this._deviceJwt}`
@@ -73529,7 +73787,13 @@ ${text}`;
73529
73787
  }
73530
73788
  const resp = await res.json();
73531
73789
  const topics = resp.map((t2) => ({ id: t2.id, name: t2.name, isDefault: t2.is_default }));
73532
- this._persisted.topics = topics;
73790
+ const primaryGid = this._persisted.groupId;
73791
+ this._persisted.topics = [
73792
+ ...(this._persisted.topics ?? []).filter((t2) => (t2.groupId ?? primaryGid) !== groupId),
73793
+ ...topics.map((t2) => ({ ...t2, groupId }))
73794
+ ];
73795
+ const def = topics.find((t2) => t2.isDefault);
73796
+ if (def) this._recordDefaultTopic(groupId, def.id);
73533
73797
  await this._persistState();
73534
73798
  return topics;
73535
73799
  }
@@ -74113,6 +74377,9 @@ ${text}`;
74113
74377
  this._persisted.defaultTopicId = primary.default_topic_id;
74114
74378
  }
74115
74379
  }
74380
+ for (const conv of conversations) {
74381
+ this._recordDefaultTopic(conv.group_id, conv.default_topic_id);
74382
+ }
74116
74383
  this._sessionGroupIds = /* @__PURE__ */ new Map();
74117
74384
  for (const conv of conversations) {
74118
74385
  if (conv.group_id) {
@@ -74225,7 +74492,7 @@ ${text}`;
74225
74492
  agentVersion: this.config.agentVersion ?? "0.0.0",
74226
74493
  // __AV_VERSION__ is injected by esbuild from package.json at build time.
74227
74494
  // Falls back to "0.0.0-dev" in non-bundled contexts (tests).
74228
- pluginVersion: true ? "0.23.49" : "0.0.0-dev"
74495
+ pluginVersion: true ? "0.23.51" : "0.0.0-dev"
74229
74496
  });
74230
74497
  this._telemetryReporter.startAutoFlush(3e4);
74231
74498
  }
@@ -74553,7 +74820,7 @@ ${text}`;
74553
74820
  agentVersion: this.config.agentVersion ?? "0.0.0",
74554
74821
  // __AV_VERSION__ is injected by esbuild from package.json at build time.
74555
74822
  // Falls back to "0.0.0-dev" in non-bundled contexts (tests).
74556
- pluginVersion: true ? "0.23.49" : "0.0.0-dev"
74823
+ pluginVersion: true ? "0.23.51" : "0.0.0-dev"
74557
74824
  });
74558
74825
  this._telemetryReporter.startAutoFlush(3e4);
74559
74826
  }
@@ -75016,11 +75283,15 @@ ${text}`;
75016
75283
  if (decisionReply) messageType = "decision_response";
75017
75284
  } catch {
75018
75285
  }
75286
+ const dmGroupId = convGroupId ?? (mgrKey?.startsWith("1to1-group:") ? mgrKey.slice("1to1-group:".length) : void 0);
75019
75287
  if (messageType === "history_catchup_request") {
75020
75288
  try {
75021
75289
  const request = JSON.parse(plaintext);
75022
75290
  if (typeof request.requesting_device_id !== "string") return;
75023
- const filtered = this._historyForCatchup("dm", void 0, request.since_ts);
75291
+ const filtered = this._historyForCatchup("dm", void 0, request.since_ts, {
75292
+ groupId: dmGroupId,
75293
+ conversationId: convId
75294
+ });
75024
75295
  const responsePayload = JSON.stringify({
75025
75296
  type: "history_catchup_response",
75026
75297
  target_device_id: request.requesting_device_id,
@@ -75075,6 +75346,9 @@ ${text}`;
75075
75346
  console.log(`[SecureChannel] Session ${convId.slice(0, 8)} activated via MLS message`);
75076
75347
  }
75077
75348
  }
75349
+ if (topicId) {
75350
+ this._rememberIncomingTopic(convId, dmGroupId, topicId);
75351
+ }
75078
75352
  if (mlsAttachment) {
75079
75353
  text = await this._augmentWithAttachment(mlsAttachment, text);
75080
75354
  }
@@ -75084,7 +75358,8 @@ ${text}`;
75084
75358
  "dm",
75085
75359
  topicId,
75086
75360
  data.created_at,
75087
- messageType
75361
+ messageType,
75362
+ { groupId: dmGroupId, conversationId: convId }
75088
75363
  );
75089
75364
  const metadata = {
75090
75365
  messageId: data.message_id ?? `mls_${Date.now()}`,
@@ -75269,7 +75544,7 @@ ${text}`;
75269
75544
  }
75270
75545
  if (messageType === "message" || messageType === "decision_response" && decisionReply) {
75271
75546
  const topicId = msgData.topic_id;
75272
- this._lastIncomingTopicId = topicId;
75547
+ this._rememberIncomingTopic(convId, void 0, topicId);
75273
75548
  let attachData;
75274
75549
  if (attachmentInfo) {
75275
75550
  try {
@@ -75297,7 +75572,8 @@ ${text}`;
75297
75572
  "dm",
75298
75573
  topicId,
75299
75574
  msgData.created_at,
75300
- messageType
75575
+ messageType,
75576
+ { conversationId: convId }
75301
75577
  );
75302
75578
  let emitText = messageText;
75303
75579
  if (attachData) {
@@ -75490,18 +75766,19 @@ ${baseText}`;
75490
75766
  if (this._state !== "ready" || this._sessions.size === 0 || !this._ws) {
75491
75767
  throw new Error("Channel is not ready");
75492
75768
  }
75493
- const topicId = options?.topicId ?? this._persisted?.defaultTopicId;
75494
75769
  const attachMeta = await this._uploadAttachment(filePath, this._primaryConversationId);
75495
- const envelope = JSON.stringify({
75496
- type: "message",
75497
- text: plaintext,
75498
- topicId,
75499
- attachment: attachMeta
75500
- });
75501
75770
  const messageGroupId = randomUUID4();
75502
75771
  const pendingWsSends = [];
75772
+ const frameHistoryContexts = [];
75503
75773
  for (const [convId, session2] of this._sessions) {
75504
75774
  if (!session2.activated) continue;
75775
+ const topicId = this._topicForFrame(void 0, convId, options?.topicId, false, false);
75776
+ const envelope = JSON.stringify({
75777
+ type: "message",
75778
+ text: plaintext,
75779
+ topicId,
75780
+ attachment: attachMeta
75781
+ });
75505
75782
  const encrypted = session2.ratchet.encrypt(envelope);
75506
75783
  const transport = encryptedMessageToTransport(encrypted);
75507
75784
  pendingWsSends.push(
@@ -75516,14 +75793,19 @@ ${baseText}`;
75516
75793
  }
75517
75794
  })
75518
75795
  );
75796
+ frameHistoryContexts.push(this._dmHistoryContext(topicId, void 0, convId));
75519
75797
  }
75520
75798
  await this._persistState();
75521
75799
  let deliveredFrames = 0;
75522
- for (const frame of pendingWsSends) {
75523
- if (this._sendApplicationFrame(frame)) deliveredFrames += 1;
75800
+ let historyContext;
75801
+ for (const [i2, frame] of pendingWsSends.entries()) {
75802
+ if (this._sendApplicationFrame(frame)) {
75803
+ if (deliveredFrames === 0) historyContext = frameHistoryContexts[i2];
75804
+ deliveredFrames += 1;
75805
+ }
75524
75806
  }
75525
75807
  if (deliveredFrames > 0) {
75526
- await this._appendHistory("agent", plaintext, this._historyContext("dm", topicId), void 0, messageGroupId);
75808
+ await this._appendHistory("agent", plaintext, historyContext ?? this._historyContext("dm"), void 0, messageGroupId);
75527
75809
  }
75528
75810
  }
75529
75811
  /**
@@ -75548,9 +75830,13 @@ ${baseText}`;
75548
75830
  topicId
75549
75831
  });
75550
75832
  const pendingWsSends = [];
75833
+ const sourceGid = this._sessionGroupIds.get(sourceConvId);
75834
+ const knowsGroups = this._sessionGroupIds.size > 0;
75551
75835
  for (const [siblingConvId, siblingSession] of this._sessions) {
75552
75836
  if (siblingConvId === sourceConvId) continue;
75553
75837
  if (!siblingSession.activated) continue;
75838
+ const siblingGid = this._sessionGroupIds.get(siblingConvId);
75839
+ if (knowsGroups && !(sourceGid && siblingGid && siblingGid === sourceGid)) continue;
75554
75840
  if (roomConvIds.has(siblingConvId)) continue;
75555
75841
  const syncEncrypted = siblingSession.ratchet.encrypt(syncPayload);
75556
75842
  const syncTransport = encryptedMessageToTransport(syncEncrypted);
@@ -75631,7 +75917,7 @@ ${baseText}`;
75631
75917
  async _replayHistoryToSession(convId) {
75632
75918
  const session2 = this._sessions.get(convId);
75633
75919
  if (!session2 || !session2.activated || !this._ws) return;
75634
- const history = this._selectHistoryContext("dm");
75920
+ const history = this._selectHistoryContext("dm", void 0, { conversationId: convId });
75635
75921
  if (history.length === 0) {
75636
75922
  console.log(`[SecureChannel] No history to replay for ${convId.slice(0, 8)}...`);
75637
75923
  return;
@@ -75705,6 +75991,10 @@ ${baseText}`;
75705
75991
  if (event.owner_hub_id) {
75706
75992
  this._persisted.ownerHubId = event.owner_hub_id;
75707
75993
  }
75994
+ if (event.group_id && !this._sessionGroupIds.has(event.conversation_id)) {
75995
+ this._sessionGroupIds.set(event.conversation_id, event.group_id);
75996
+ this._persisted.conversationGroupIds = Object.fromEntries(this._sessionGroupIds);
75997
+ }
75708
75998
  await this._persistState();
75709
75999
  console.log(
75710
76000
  `[SecureChannel] Session initialized for device ${event.owner_device_id.slice(0, 8)}... (conv ${event.conversation_id.slice(0, 8)}...)`
@@ -78003,7 +78293,7 @@ ${baseText}`;
78003
78293
  }
78004
78294
  if (messageType === "message" || messageType === "decision_response" && decisionReply) {
78005
78295
  const topicId = msg.topic_id;
78006
- await this._appendHistory("owner", messageText, this._historyContext("dm", topicId), msg.created_at, msg.message_id);
78296
+ await this._appendHistory("owner", messageText, this._dmHistoryContext(topicId, void 0, msg.conversation_id), msg.created_at, msg.message_id);
78007
78297
  const metadata = {
78008
78298
  messageId: msg.message_id,
78009
78299
  conversationId: msg.conversation_id,
@@ -78609,7 +78899,7 @@ ${baseText}`;
78609
78899
  }
78610
78900
  if (messageType === "message" || messageType === "decision_response" && decisionReply) {
78611
78901
  const topicId = msg.topic_id;
78612
- await this._appendHistory("owner", messageText, this._historyContext("dm", topicId), msg.created_at, msg.id);
78902
+ await this._appendHistory("owner", messageText, this._dmHistoryContext(topicId, void 0, msg.conversation_id), msg.created_at, msg.id);
78613
78903
  const metadata = {
78614
78904
  messageId: msg.id,
78615
78905
  conversationId: msg.conversation_id,
@@ -78929,7 +79219,7 @@ ${baseText}`;
78929
79219
  }
78930
79220
  if (messageType === "message" || messageType === "decision_response" && decisionReply) {
78931
79221
  const topicId = msg.topic_id;
78932
- await this._appendHistory("owner", messageText, this._historyContext("dm", topicId), msg.created_at, msg.id);
79222
+ await this._appendHistory("owner", messageText, this._dmHistoryContext(topicId, void 0, msg.conversation_id), msg.created_at, msg.id);
78933
79223
  const metadata = {
78934
79224
  messageId: msg.id,
78935
79225
  conversationId: msg.conversation_id,
@@ -100709,7 +100999,7 @@ data:
100709
100999
  await init_skill_telemetry();
100710
101000
  await init_policy_enforcer();
100711
101001
  init_room_protocol();
100712
- VERSION = true ? "0.23.49" : "0.0.0-dev";
101002
+ VERSION = true ? "0.23.51" : "0.0.0-dev";
100713
101003
  }
100714
101004
  });
100715
101005
  await init_index();
@@ -102810,7 +103100,7 @@ async function main() {
102810
103100
  const info = parseInfoFlags(process.argv.slice(2));
102811
103101
  if (info.showVersion || info.showHelp) {
102812
103102
  const version2 = buildClientVersion2(
102813
- true ? "0.4.20" : void 0
103103
+ true ? "0.4.22" : void 0
102814
103104
  );
102815
103105
  if (info.showVersion) printLine(version2);
102816
103106
  if (info.showHelp) {
@@ -102849,7 +103139,7 @@ async function main() {
102849
103139
  process.exit(0);
102850
103140
  }
102851
103141
  const cfg = loadConfig(process.env, process.argv.slice(2));
102852
- logLine(`[grok-bridge] version: ${true ? "0.4.20" : "dev"}`);
103142
+ logLine(`[grok-bridge] version: ${true ? "0.4.22" : "dev"}`);
102853
103143
  mkdirSync7(cfg.workspaceDir, { recursive: true });
102854
103144
  mkdirSync7(cfg.fenceHome, { recursive: true });
102855
103145
  seedFenceCredential({
@@ -102864,7 +103154,7 @@ async function main() {
102864
103154
  agentName: cfg.agentName,
102865
103155
  platform: "node",
102866
103156
  clientVersion: buildClientVersion2(
102867
- true ? "0.4.20" : void 0
103157
+ true ? "0.4.22" : void 0
102868
103158
  )
102869
103159
  });
102870
103160
  channelRef = channel;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentvault/grok-bridge",
3
- "version": "0.4.20",
3
+ "version": "0.4.22",
4
4
  "type": "module",
5
5
  "description": "AgentVault Grok Bridge — daemon bridging a Grok agent into E2E-encrypted AgentVault direct messages and rooms.",
6
6
  "main": "dist/index.js",