@agentvault/grok-bridge 0.4.22 → 0.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridge.d.ts +14 -1
- package/dist/index.js +643 -95
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -43,6 +43,7 @@ import { readdir as readdir2, readFile as readFile4, writeFile as writeFile2, re
|
|
|
43
43
|
import { join as join5 } from "node:path";
|
|
44
44
|
import { randomUUID as randomUUID3 } from "node:crypto";
|
|
45
45
|
import { EventEmitter } from "node:events";
|
|
46
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
46
47
|
import { createServer } from "node:http";
|
|
47
48
|
import { randomUUID as randomUUID4, createHash } from "node:crypto";
|
|
48
49
|
import { readFileSync } from "node:fs";
|
|
@@ -52,7 +53,7 @@ import { join as join6 } from "node:path";
|
|
|
52
53
|
import { readFile as readFile5 } from "node:fs/promises";
|
|
53
54
|
import WebSocket from "ws";
|
|
54
55
|
import { resolve as resolve2 } from "node:path";
|
|
55
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
56
|
+
import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
|
|
56
57
|
import { Http2ServerRequest as Http2ServerRequest2 } from "http2";
|
|
57
58
|
import { Http2ServerRequest } from "http2";
|
|
58
59
|
import { Readable as Readable2 } from "stream";
|
|
@@ -11712,11 +11713,11 @@ async function joinWithFirstMatchingKp(welcomeBytes, candidates) {
|
|
|
11712
11713
|
return null;
|
|
11713
11714
|
}
|
|
11714
11715
|
function ownIdentity() {
|
|
11715
|
-
const v2 = true ? "0.23.
|
|
11716
|
+
const v2 = true ? "0.23.52" : FALLBACK;
|
|
11716
11717
|
return `${PACKAGE}@${v2}`;
|
|
11717
11718
|
}
|
|
11718
11719
|
function buildSha() {
|
|
11719
|
-
const raw = true ? "
|
|
11720
|
+
const raw = true ? "d7143c3" : "";
|
|
11720
11721
|
const cleaned = (raw ?? "").trim();
|
|
11721
11722
|
return !cleaned || cleaned === "unknown" ? null : cleaned;
|
|
11722
11723
|
}
|
|
@@ -12494,11 +12495,38 @@ function _resetCompatCacheForTest() {
|
|
|
12494
12495
|
_agentEventFn = null;
|
|
12495
12496
|
_transcriptFn = null;
|
|
12496
12497
|
}
|
|
12498
|
+
function ownerRoutingFrom(parsed) {
|
|
12499
|
+
const out = {};
|
|
12500
|
+
if (parsed.conversation_id !== void 0) {
|
|
12501
|
+
if (typeof parsed.conversation_id !== "string" || !parsed.conversation_id) return "'conversation_id' must be a string";
|
|
12502
|
+
out.conversationId = parsed.conversation_id;
|
|
12503
|
+
}
|
|
12504
|
+
if (parsed.audience !== void 0) {
|
|
12505
|
+
if (parsed.audience !== "person" && parsed.audience !== "everyone") {
|
|
12506
|
+
return `'audience' must be "person" or "everyone"`;
|
|
12507
|
+
}
|
|
12508
|
+
out.audience = parsed.audience;
|
|
12509
|
+
}
|
|
12510
|
+
return out;
|
|
12511
|
+
}
|
|
12512
|
+
function ambiguousOwnerRequest(channel, routing) {
|
|
12513
|
+
const check = channel.isUntargetedOwnerAmbiguous;
|
|
12514
|
+
if (typeof check !== "function" || !check.call(channel, routing)) return null;
|
|
12515
|
+
return { status: 409, body: { ok: false, error: AMBIGUOUS_OWNER_ERROR } };
|
|
12516
|
+
}
|
|
12517
|
+
function statusOf(receipt) {
|
|
12518
|
+
if (receipt.ambiguous) return 409;
|
|
12519
|
+
return receipt.ok ? 200 : 500;
|
|
12520
|
+
}
|
|
12497
12521
|
async function handleSendRequest(parsed, channel) {
|
|
12498
12522
|
const text = parsed.text;
|
|
12499
12523
|
if (!text || typeof text !== "string") {
|
|
12500
12524
|
return { status: 400, body: { ok: false, error: "Missing 'text' field" } };
|
|
12501
12525
|
}
|
|
12526
|
+
const routing = ownerRoutingFrom(parsed);
|
|
12527
|
+
if (typeof routing === "string") {
|
|
12528
|
+
return { status: 400, body: { ok: false, error: routing } };
|
|
12529
|
+
}
|
|
12502
12530
|
try {
|
|
12503
12531
|
let target;
|
|
12504
12532
|
let a2aTarget = parsed.hub_address ?? parsed.a2a_address ?? parsed.a2aAddress;
|
|
@@ -12516,10 +12544,10 @@ async function handleSendRequest(parsed, channel) {
|
|
|
12516
12544
|
const receipt2 = await channel.deliver(
|
|
12517
12545
|
{ kind: "owner" },
|
|
12518
12546
|
{ type: "attachment", text, filePath: parsed.file_path },
|
|
12519
|
-
{ topicId: parsed.topicId }
|
|
12547
|
+
{ topicId: parsed.topicId, ...routing, refuseIfAmbiguous: true }
|
|
12520
12548
|
);
|
|
12521
12549
|
return {
|
|
12522
|
-
status: receipt2
|
|
12550
|
+
status: statusOf(receipt2),
|
|
12523
12551
|
body: {
|
|
12524
12552
|
ok: receipt2.ok,
|
|
12525
12553
|
destination: receipt2.destination,
|
|
@@ -12533,6 +12561,8 @@ async function handleSendRequest(parsed, channel) {
|
|
|
12533
12561
|
target,
|
|
12534
12562
|
{ type: "text", text },
|
|
12535
12563
|
{
|
|
12564
|
+
...routing,
|
|
12565
|
+
refuseIfAmbiguous: true,
|
|
12536
12566
|
topicId: parsed.topicId,
|
|
12537
12567
|
priority: parsed.priority,
|
|
12538
12568
|
metadata: {
|
|
@@ -12542,7 +12572,7 @@ async function handleSendRequest(parsed, channel) {
|
|
|
12542
12572
|
}
|
|
12543
12573
|
);
|
|
12544
12574
|
return {
|
|
12545
|
-
status: receipt
|
|
12575
|
+
status: statusOf(receipt),
|
|
12546
12576
|
body: {
|
|
12547
12577
|
ok: receipt.ok,
|
|
12548
12578
|
destination: receipt.destination,
|
|
@@ -12557,6 +12587,10 @@ async function handleActionRequest(parsed, channel) {
|
|
|
12557
12587
|
if (!parsed.action || typeof parsed.action !== "string") {
|
|
12558
12588
|
return { status: 400, body: { ok: false, error: "Missing 'action' field" } };
|
|
12559
12589
|
}
|
|
12590
|
+
const routing = ownerRoutingFrom(parsed);
|
|
12591
|
+
if (typeof routing === "string") {
|
|
12592
|
+
return { status: 400, body: { ok: false, error: routing } };
|
|
12593
|
+
}
|
|
12560
12594
|
try {
|
|
12561
12595
|
const confirmation = {
|
|
12562
12596
|
action: parsed.action,
|
|
@@ -12566,12 +12600,10 @@ async function handleActionRequest(parsed, channel) {
|
|
|
12566
12600
|
estimated_cost: parsed.estimated_cost
|
|
12567
12601
|
};
|
|
12568
12602
|
const target = parsed.room_id && typeof parsed.room_id === "string" ? { kind: "room", roomId: parsed.room_id } : { kind: "owner" };
|
|
12569
|
-
const
|
|
12570
|
-
|
|
12571
|
-
{ type: "action_confirmation", confirmation }
|
|
12572
|
-
);
|
|
12603
|
+
const content = { type: "action_confirmation", confirmation };
|
|
12604
|
+
const receipt = await channel.deliver(target, content, { ...routing, refuseIfAmbiguous: true });
|
|
12573
12605
|
return {
|
|
12574
|
-
status: receipt
|
|
12606
|
+
status: statusOf(receipt),
|
|
12575
12607
|
body: {
|
|
12576
12608
|
ok: receipt.ok,
|
|
12577
12609
|
destination: receipt.destination,
|
|
@@ -12596,6 +12628,12 @@ async function handleDecisionRequest(parsed, channel) {
|
|
|
12596
12628
|
return { status: 400, body: { ok: false, error: "Each option must have 'option_id' and 'label'" } };
|
|
12597
12629
|
}
|
|
12598
12630
|
}
|
|
12631
|
+
const routing = ownerRoutingFrom(parsed);
|
|
12632
|
+
if (typeof routing === "string") {
|
|
12633
|
+
return { status: 400, body: { ok: false, error: routing } };
|
|
12634
|
+
}
|
|
12635
|
+
const ambiguous = ambiguousOwnerRequest(channel, routing);
|
|
12636
|
+
if (ambiguous) return ambiguous;
|
|
12599
12637
|
try {
|
|
12600
12638
|
const decision_id = await channel.sendDecisionRequest({
|
|
12601
12639
|
title,
|
|
@@ -12604,7 +12642,7 @@ async function handleDecisionRequest(parsed, channel) {
|
|
|
12604
12642
|
context_refs: parsed.context_refs,
|
|
12605
12643
|
deadline: parsed.deadline,
|
|
12606
12644
|
auto_action: parsed.auto_action
|
|
12607
|
-
});
|
|
12645
|
+
}, routing);
|
|
12608
12646
|
return { status: 200, body: { ok: true, decision_id } };
|
|
12609
12647
|
} catch (err) {
|
|
12610
12648
|
return { status: 500, body: { ok: false, error: String(err) } };
|
|
@@ -13102,7 +13140,7 @@ async function _handleInbound(params) {
|
|
|
13102
13140
|
core.error?.(`[AgentVault] session record failed: ${String(err)}`);
|
|
13103
13141
|
}
|
|
13104
13142
|
});
|
|
13105
|
-
await core.channel.reply.dispatchReplyWithBufferedBlockDispatcher({
|
|
13143
|
+
await channel.runForConversation(metadata.conversationId, () => core.channel.reply.dispatchReplyWithBufferedBlockDispatcher({
|
|
13106
13144
|
ctx: ctxPayload,
|
|
13107
13145
|
cfg,
|
|
13108
13146
|
dispatcherOptions: {
|
|
@@ -13119,7 +13157,7 @@ async function _handleInbound(params) {
|
|
|
13119
13157
|
}
|
|
13120
13158
|
},
|
|
13121
13159
|
replyOptions: {}
|
|
13122
|
-
});
|
|
13160
|
+
}), { groupId: metadata.conversationGroupId });
|
|
13123
13161
|
}
|
|
13124
13162
|
function getErrorMap() {
|
|
13125
13163
|
return overrideErrorMap;
|
|
@@ -17643,7 +17681,7 @@ function armSseKeepAlive(intervalMs, onTick) {
|
|
|
17643
17681
|
timer.unref?.();
|
|
17644
17682
|
return timer;
|
|
17645
17683
|
}
|
|
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;
|
|
17684
|
+
var __create, __defProp2, __getOwnPropDesc, __getOwnPropNames2, __getProtoOf, __hasOwnProp, __esm2, __commonJS, __export2, __copyProps, __toESM, SENTINEL, WRAPPERS, INSTRUCTION, init_abstention, AMBIGUOUS_OWNER_ERROR, init_owner_routing, 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, _turnConversation, PERSON_INVOLVED_WINDOW_MS, ATTESTED_INBOUND_MAX, UNMAPPED_RECONCILE_COOLDOWN_MS, 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;
|
|
17647
17685
|
var init_dist = __esm({
|
|
17648
17686
|
async "../plugin/dist/index.js"() {
|
|
17649
17687
|
"use strict";
|
|
@@ -17696,6 +17734,12 @@ var init_dist = __esm({
|
|
|
17696
17734
|
INSTRUCTION = "not every message needs an answer from you: if this one is not addressed to you and asks nothing of you, reply with exactly " + SENTINEL + " and nothing else \u2014 that is discarded, not posted, and is how you stay quiet; never post a message SAYING that you are staying quiet";
|
|
17697
17735
|
}
|
|
17698
17736
|
});
|
|
17737
|
+
init_owner_routing = __esm2({
|
|
17738
|
+
"src/owner-routing.ts"() {
|
|
17739
|
+
"use strict";
|
|
17740
|
+
AMBIGUOUS_OWNER_ERROR = `More than one person is talking to this agent right now, so it can't tell who this is for. Add 'conversation_id' to say which conversation, or send audience "everyone" to reach them all.`;
|
|
17741
|
+
}
|
|
17742
|
+
});
|
|
17699
17743
|
init_envelope_text = __esm2({
|
|
17700
17744
|
"src/envelope-text.ts"() {
|
|
17701
17745
|
"use strict";
|
|
@@ -70527,6 +70571,7 @@ var init_dist = __esm({
|
|
|
70527
70571
|
init_http_handlers = __esm2({
|
|
70528
70572
|
"src/http-handlers.ts"() {
|
|
70529
70573
|
"use strict";
|
|
70574
|
+
init_owner_routing();
|
|
70530
70575
|
}
|
|
70531
70576
|
});
|
|
70532
70577
|
mcp_proxy_helpers_exports = {};
|
|
@@ -70556,6 +70601,7 @@ var init_dist = __esm({
|
|
|
70556
70601
|
async "src/channel.ts"() {
|
|
70557
70602
|
"use strict";
|
|
70558
70603
|
init_abstention();
|
|
70604
|
+
init_owner_routing();
|
|
70559
70605
|
init_envelope_text();
|
|
70560
70606
|
init_mls_commit_classify();
|
|
70561
70607
|
init_room_protocol();
|
|
@@ -70605,6 +70651,10 @@ var init_dist = __esm({
|
|
|
70605
70651
|
OUTBOUND_DEDUPE_TYPES = /* @__PURE__ */ new Set(["text", "status_alert", "artifact", "attachment"]);
|
|
70606
70652
|
RETRY_CANDIDATE_TTL_MS = 6e4;
|
|
70607
70653
|
RETRY_CANDIDATE_MAX = 32;
|
|
70654
|
+
_turnConversation = new AsyncLocalStorage();
|
|
70655
|
+
PERSON_INVOLVED_WINDOW_MS = 5 * 6e4;
|
|
70656
|
+
ATTESTED_INBOUND_MAX = 64;
|
|
70657
|
+
UNMAPPED_RECONCILE_COOLDOWN_MS = 6e4;
|
|
70608
70658
|
TOPIC_ID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
70609
70659
|
ROOM_FULFIL_COOLDOWN_MS = 6e4;
|
|
70610
70660
|
SecureChannel = class _SecureChannel extends EventEmitter {
|
|
@@ -70843,6 +70893,31 @@ ${text}`;
|
|
|
70843
70893
|
_lastIncomingTopics = /* @__PURE__ */ new Map();
|
|
70844
70894
|
/** Room ID from the most recent inbound room message — used as fallback for HTTP /send replies. */
|
|
70845
70895
|
_lastInboundRoomId;
|
|
70896
|
+
/**
|
|
70897
|
+
* #1418: the most recent owner 1:1 message that reached the agent — the
|
|
70898
|
+
* person involved in whatever the agent says next without naming a
|
|
70899
|
+
* conversation (see `_involvedPerson`). In memory only: after a restart
|
|
70900
|
+
* there is no trigger, so untargeted content goes to the primary person.
|
|
70901
|
+
*/
|
|
70902
|
+
_lastInboundDm;
|
|
70903
|
+
/** #1418: turns in progress (`runForConversation`). */
|
|
70904
|
+
_activeTurns = /* @__PURE__ */ new Set();
|
|
70905
|
+
/**
|
|
70906
|
+
* #1418: recent owner 1:1 messages that decrypted, keyed by
|
|
70907
|
+
* conversation|group — evidence of which conversation, group and browser
|
|
70908
|
+
* belong together (one person). In memory only, bounded.
|
|
70909
|
+
*/
|
|
70910
|
+
_attestedInbound = /* @__PURE__ */ new Map();
|
|
70911
|
+
/** #1418: per UNMAPPED group (or conversation), the last time it asked for a reconcile. */
|
|
70912
|
+
_unmappedReconcileAt = /* @__PURE__ */ new Map();
|
|
70913
|
+
/**
|
|
70914
|
+
* #1418: 1:1 groups joined by a Welcome IN THIS PROCESS while no
|
|
70915
|
+
* conversation mapped them — a person who has not been learned yet, counted
|
|
70916
|
+
* as one until the next successful reconcile. Persisted husks never are.
|
|
70917
|
+
*/
|
|
70918
|
+
_welcomedUnmapped = /* @__PURE__ */ new Map();
|
|
70919
|
+
/** #1418: what the last SUCCESSFUL reconcile reported live, and when it started. */
|
|
70920
|
+
_lastReconcile;
|
|
70846
70921
|
/** Rate-limit: last resync_request timestamp per conversation (5-min cooldown). */
|
|
70847
70922
|
_lastResyncRequest = /* @__PURE__ */ new Map();
|
|
70848
70923
|
/** Dedup: last room/group welcome self-heal request timestamp per group (30s window). */
|
|
@@ -71448,6 +71523,379 @@ ${text}`;
|
|
|
71448
71523
|
if (this._persisted?.groupId) known.add(this._persisted.groupId);
|
|
71449
71524
|
return known;
|
|
71450
71525
|
}
|
|
71526
|
+
// --- #1418: only the person involved ----------------------------------
|
|
71527
|
+
/**
|
|
71528
|
+
* Run `fn` as the work an inbound 1:1 message from `conversationId`
|
|
71529
|
+
* triggered. Untargeted owner content sent while it runs — from inside its
|
|
71530
|
+
* async call chain, or from anywhere while it is the only turn in progress —
|
|
71531
|
+
* goes to that conversation's person only.
|
|
71532
|
+
*
|
|
71533
|
+
* `opts.groupId` is the group that message DECRYPTED under
|
|
71534
|
+
* (`metadata.conversationGroupId`). Pass it: it outranks the local
|
|
71535
|
+
* conversation→group map, which can be stale, and it is all there is for a
|
|
71536
|
+
* frame whose conversation is not mapped yet. With neither an id nor a
|
|
71537
|
+
* group, `fn` runs unchanged.
|
|
71538
|
+
*/
|
|
71539
|
+
async runForConversation(conversationId, fn, opts) {
|
|
71540
|
+
const groupId = typeof opts?.groupId === "string" && opts.groupId ? opts.groupId : void 0;
|
|
71541
|
+
if (!conversationId && !groupId) return fn();
|
|
71542
|
+
const store = { convId: conversationId || void 0, groupId, ended: false };
|
|
71543
|
+
this._activeTurns.add(store);
|
|
71544
|
+
try {
|
|
71545
|
+
return await _turnConversation.run(store, fn);
|
|
71546
|
+
} finally {
|
|
71547
|
+
store.ended = true;
|
|
71548
|
+
store.endedAt = Date.now();
|
|
71549
|
+
this._activeTurns.delete(store);
|
|
71550
|
+
}
|
|
71551
|
+
}
|
|
71552
|
+
/**
|
|
71553
|
+
* The turn this call chain belongs to (#1418) — running, or ended but
|
|
71554
|
+
* still within the window in which work it left behind is for its person.
|
|
71555
|
+
* `"expired"` once that window is over: the work is proactive now.
|
|
71556
|
+
*/
|
|
71557
|
+
_currentTurn() {
|
|
71558
|
+
const store = _turnConversation.getStore();
|
|
71559
|
+
if (!store) return void 0;
|
|
71560
|
+
if (!store.ended) return store;
|
|
71561
|
+
return Date.now() - (store.endedAt ?? 0) < PERSON_INVOLVED_WINDOW_MS ? store : "expired";
|
|
71562
|
+
}
|
|
71563
|
+
/**
|
|
71564
|
+
* Record an owner 1:1 message that just decrypted (#1418).
|
|
71565
|
+
*
|
|
71566
|
+
* Always kept as evidence of which conversation, group and browser belong
|
|
71567
|
+
* together (see `_dmPeople`). It makes its person "the person involved" only
|
|
71568
|
+
* when it is RECENT by the server's `createdAt`: a frame replayed from
|
|
71569
|
+
* backlog on reconnect is not something anyone is waiting on an answer to.
|
|
71570
|
+
*/
|
|
71571
|
+
_noteInboundDm(convId, groupId, opts = {}) {
|
|
71572
|
+
if (!convId && !groupId) return;
|
|
71573
|
+
const now = Date.now();
|
|
71574
|
+
const sentAt = opts.createdAt ? Date.parse(opts.createdAt) : NaN;
|
|
71575
|
+
const at = Number.isFinite(sentAt) ? Math.min(now, sentAt) : now;
|
|
71576
|
+
const sender = opts.senderDeviceId && opts.senderDeviceId !== this._deviceId ? opts.senderDeviceId : void 0;
|
|
71577
|
+
const key = `${convId ?? ""}|${groupId ?? ""}|${sender ?? ""}`;
|
|
71578
|
+
const prior = this._attestedInbound.get(key);
|
|
71579
|
+
this._attestedInbound.delete(key);
|
|
71580
|
+
this._attestedInbound.set(key, { convId, groupId, senderDeviceId: sender, at: Math.max(prior?.at ?? 0, at) });
|
|
71581
|
+
while (this._attestedInbound.size > ATTESTED_INBOUND_MAX) {
|
|
71582
|
+
const oldest = this._attestedInbound.keys().next().value;
|
|
71583
|
+
if (oldest === void 0) break;
|
|
71584
|
+
this._attestedInbound.delete(oldest);
|
|
71585
|
+
}
|
|
71586
|
+
if (this._lastInboundDm && this._lastInboundDm.at > at) return;
|
|
71587
|
+
this._lastInboundDm = {
|
|
71588
|
+
convId,
|
|
71589
|
+
groupId: groupId ?? (convId ? this._sessionGroupIds.get(convId) : void 0),
|
|
71590
|
+
at
|
|
71591
|
+
};
|
|
71592
|
+
}
|
|
71593
|
+
/** The group `convId`'s most recent inbound decrypted under, if any. */
|
|
71594
|
+
_attestedGroupOf(convId) {
|
|
71595
|
+
if (!convId) return void 0;
|
|
71596
|
+
let gid;
|
|
71597
|
+
for (const a2 of this._attestedInbound.values()) {
|
|
71598
|
+
if (a2.convId === convId && a2.groupId) gid = a2.groupId;
|
|
71599
|
+
}
|
|
71600
|
+
return gid;
|
|
71601
|
+
}
|
|
71602
|
+
/** Does some mapped conversation point at `groupId`? */
|
|
71603
|
+
_isMappedGroup(groupId) {
|
|
71604
|
+
for (const gid of this._sessionGroupIds.values()) if (gid === groupId) return true;
|
|
71605
|
+
return false;
|
|
71606
|
+
}
|
|
71607
|
+
/**
|
|
71608
|
+
* An owner message decrypted under a group no mapped conversation points at
|
|
71609
|
+
* (#1418): the map is stale — a Welcome landed before its conversation was
|
|
71610
|
+
* learned, or a conversation was recreated. Re-resolve it from the server.
|
|
71611
|
+
* Fire-and-forget and rate-limited per group: never awaited on the receive
|
|
71612
|
+
* or Welcome path, so it can never hold up MLS processing.
|
|
71613
|
+
*/
|
|
71614
|
+
_reconcileForUnmappedGroup(groupId) {
|
|
71615
|
+
if (!groupId || this._isMappedGroup(groupId)) return;
|
|
71616
|
+
this._reconcileSoon(`g:${groupId}`);
|
|
71617
|
+
}
|
|
71618
|
+
/** The same for a Double Ratchet message on a conversation the map does not know. */
|
|
71619
|
+
_reconcileForUnmappedConversation(convId) {
|
|
71620
|
+
if (!convId || this._sessionGroupIds.size === 0 || this._sessionGroupIds.has(convId)) return;
|
|
71621
|
+
this._reconcileSoon(`c:${convId}`);
|
|
71622
|
+
}
|
|
71623
|
+
_reconcileSoon(key) {
|
|
71624
|
+
const now = Date.now();
|
|
71625
|
+
if (now - (this._unmappedReconcileAt.get(key) ?? 0) < UNMAPPED_RECONCILE_COOLDOWN_MS) return;
|
|
71626
|
+
this._unmappedReconcileAt.set(key, now);
|
|
71627
|
+
void Promise.resolve().then(() => this._reconcileConversationGroups()).catch((err) => console.warn("[SecureChannel] Conversation-group reconcile (unmapped group) failed:", err));
|
|
71628
|
+
}
|
|
71629
|
+
/** A conversation of `groupId`, for an MLS frame that named only its group. */
|
|
71630
|
+
_conversationOfGroup(groupId) {
|
|
71631
|
+
if (!groupId) return void 0;
|
|
71632
|
+
if (this._primaryConversationId && this._sessionGroupIds.get(this._primaryConversationId) === groupId) {
|
|
71633
|
+
return this._primaryConversationId;
|
|
71634
|
+
}
|
|
71635
|
+
for (const [convId, gid] of this._sessionGroupIds) {
|
|
71636
|
+
if (gid === groupId) return convId;
|
|
71637
|
+
}
|
|
71638
|
+
return void 0;
|
|
71639
|
+
}
|
|
71640
|
+
/** Is `convId` one of this agent's own 1:1 conversations (never a room's or an A2A channel's)? */
|
|
71641
|
+
_isOwnDmConversation(convId) {
|
|
71642
|
+
if (this._isNonDmConversation(convId)) return false;
|
|
71643
|
+
return this._sessions.has(convId) || this._sessionGroupIds.has(convId) || !!this._persisted?.mlsConversations?.[convId] || convId === this._primaryConversationId;
|
|
71644
|
+
}
|
|
71645
|
+
/**
|
|
71646
|
+
* #1418 — the PEOPLE this agent has a 1:1 with, or `undefined` when it
|
|
71647
|
+
* cannot tell (no conversation is mapped: then it behaves as before #1418).
|
|
71648
|
+
*
|
|
71649
|
+
* People, not groups. Since #1399 one person has one group, but an agent
|
|
71650
|
+
* also keeps joined groups that are nobody's any more — husks of deleted or
|
|
71651
|
+
* recreated conversations. Measured 2026-10-24: wren held 13 joined groups
|
|
71652
|
+
* for 1 mapped, loopita 2 for 1, wowzer 2 for 1. Counting joined groups made
|
|
71653
|
+
* all three single-person agents look like several people, and their
|
|
71654
|
+
* replies could go only to a dead group.
|
|
71655
|
+
*
|
|
71656
|
+
* So a person is built from the conversations the server mapped, joined by
|
|
71657
|
+
* evidence that two things are the same person:
|
|
71658
|
+
* - the same group (a legacy group shared by several people cannot be told
|
|
71659
|
+
* apart, so it stays one — exactly the pre-#1418 behaviour);
|
|
71660
|
+
* - the same owner browser (a browser belongs to exactly one person);
|
|
71661
|
+
* - a message that decrypted under a group, from a conversation and browser.
|
|
71662
|
+
* A joined group nothing maps and nobody has spoken in is not a person. A
|
|
71663
|
+
* message on an unmapped group from a browser nobody knows IS someone —
|
|
71664
|
+
* that fails closed, toward "only them".
|
|
71665
|
+
*/
|
|
71666
|
+
_dmPeople() {
|
|
71667
|
+
if (this._sessionGroupIds.size === 0) return void 0;
|
|
71668
|
+
const parent2 = /* @__PURE__ */ new Map();
|
|
71669
|
+
const add4 = (x2) => {
|
|
71670
|
+
if (!parent2.has(x2)) parent2.set(x2, x2);
|
|
71671
|
+
};
|
|
71672
|
+
const find = (x2) => {
|
|
71673
|
+
let root3 = x2;
|
|
71674
|
+
while (parent2.get(root3) !== root3) root3 = parent2.get(root3);
|
|
71675
|
+
return root3;
|
|
71676
|
+
};
|
|
71677
|
+
const union2 = (a2, b2) => {
|
|
71678
|
+
if (!a2 || !b2) return;
|
|
71679
|
+
add4(a2);
|
|
71680
|
+
add4(b2);
|
|
71681
|
+
const ra2 = find(a2), rb = find(b2);
|
|
71682
|
+
if (ra2 !== rb) parent2.set(ra2, rb);
|
|
71683
|
+
};
|
|
71684
|
+
const ownerOf = (convId) => {
|
|
71685
|
+
const owner = this._sessions.get(convId)?.ownerDeviceId ?? this._persisted?.sessions?.[convId]?.ownerDeviceId;
|
|
71686
|
+
return owner ? `d:${owner}` : void 0;
|
|
71687
|
+
};
|
|
71688
|
+
for (const [convId, gid] of this._sessionGroupIds) {
|
|
71689
|
+
add4(`c:${convId}`);
|
|
71690
|
+
union2(`c:${convId}`, `g:${gid}`);
|
|
71691
|
+
union2(`c:${convId}`, ownerOf(convId));
|
|
71692
|
+
}
|
|
71693
|
+
const primary = this._primaryConversationId || this._persisted?.primaryConversationId;
|
|
71694
|
+
const primaryGid = this._persisted?.groupId;
|
|
71695
|
+
if (primary && primaryGid && (parent2.has(`c:${primary}`) || parent2.has(`g:${primaryGid}`))) {
|
|
71696
|
+
union2(`c:${primary}`, `g:${primaryGid}`);
|
|
71697
|
+
}
|
|
71698
|
+
for (const gid of this._welcomedUnmapped.keys()) add4(`g:${gid}`);
|
|
71699
|
+
const records = [...this._attestedInbound.values()].map((a2) => ({
|
|
71700
|
+
a: a2,
|
|
71701
|
+
nodes: [
|
|
71702
|
+
a2.convId ? `c:${a2.convId}` : void 0,
|
|
71703
|
+
a2.groupId ? `g:${a2.groupId}` : void 0,
|
|
71704
|
+
a2.senderDeviceId ? `d:${a2.senderDeviceId}` : void 0
|
|
71705
|
+
].filter((n2) => !!n2)
|
|
71706
|
+
}));
|
|
71707
|
+
const placed = /* @__PURE__ */ new Set();
|
|
71708
|
+
const place = (i2) => {
|
|
71709
|
+
const { a: a2, nodes } = records[i2];
|
|
71710
|
+
for (const n2 of nodes) add4(n2);
|
|
71711
|
+
for (const n2 of nodes.slice(1)) union2(nodes[0], n2);
|
|
71712
|
+
if (a2.convId && this._sessionGroupIds.has(a2.convId)) union2(`c:${a2.convId}`, ownerOf(a2.convId));
|
|
71713
|
+
placed.add(i2);
|
|
71714
|
+
};
|
|
71715
|
+
const linkKnown = () => {
|
|
71716
|
+
for (let progress = true; progress; ) {
|
|
71717
|
+
progress = false;
|
|
71718
|
+
records.forEach((r2, i2) => {
|
|
71719
|
+
if (!placed.has(i2) && r2.nodes.some((n2) => parent2.has(n2))) {
|
|
71720
|
+
place(i2);
|
|
71721
|
+
progress = true;
|
|
71722
|
+
}
|
|
71723
|
+
});
|
|
71724
|
+
}
|
|
71725
|
+
};
|
|
71726
|
+
linkKnown();
|
|
71727
|
+
records.forEach((r2, i2) => {
|
|
71728
|
+
if (!placed.has(i2) && this._mayBeNewPerson(r2.a)) place(i2);
|
|
71729
|
+
});
|
|
71730
|
+
linkKnown();
|
|
71731
|
+
const roots = /* @__PURE__ */ new Set();
|
|
71732
|
+
for (const node2 of parent2.keys()) {
|
|
71733
|
+
if (!node2.startsWith("d:")) roots.add(find(node2));
|
|
71734
|
+
}
|
|
71735
|
+
return {
|
|
71736
|
+
count: roots.size,
|
|
71737
|
+
keyOf: (convId, groupId) => {
|
|
71738
|
+
if (convId && parent2.has(`c:${convId}`)) return find(`c:${convId}`);
|
|
71739
|
+
if (groupId && parent2.has(`g:${groupId}`)) return find(`g:${groupId}`);
|
|
71740
|
+
return void 0;
|
|
71741
|
+
}
|
|
71742
|
+
};
|
|
71743
|
+
}
|
|
71744
|
+
/**
|
|
71745
|
+
* May this inbound evidence stand for a person nobody knows yet (#1418)?
|
|
71746
|
+
* Only if it was sent recently, and the last successful reconcile — when it
|
|
71747
|
+
* started after the message was sent — listed its conversation or group.
|
|
71748
|
+
*/
|
|
71749
|
+
_mayBeNewPerson(a2) {
|
|
71750
|
+
if (Date.now() - a2.at >= PERSON_INVOLVED_WINDOW_MS) return false;
|
|
71751
|
+
const r2 = this._lastReconcile;
|
|
71752
|
+
if (r2 && a2.at <= r2.at && !(a2.convId && r2.convs.has(a2.convId)) && !(a2.groupId && r2.groups.has(a2.groupId))) return false;
|
|
71753
|
+
return true;
|
|
71754
|
+
}
|
|
71755
|
+
/** More than one person has a 1:1 with this agent (#1418). Unknown counts as one: the old behaviour. */
|
|
71756
|
+
_isMultiPerson() {
|
|
71757
|
+
return (this._dmPeople()?.count ?? 0) > 1;
|
|
71758
|
+
}
|
|
71759
|
+
/**
|
|
71760
|
+
* The group a turn's message decrypted under, for placing the turn when its
|
|
71761
|
+
* conversation is not mapped (a mapped conversation already names its person).
|
|
71762
|
+
*/
|
|
71763
|
+
_turnGroup(turn) {
|
|
71764
|
+
return turn.groupId ?? this._attestedGroupOf(turn.convId);
|
|
71765
|
+
}
|
|
71766
|
+
/** The people with a 1:1 turn in progress, one turn each (#1418). */
|
|
71767
|
+
_activeTurnPeople() {
|
|
71768
|
+
const people = this._dmPeople();
|
|
71769
|
+
const out = /* @__PURE__ */ new Map();
|
|
71770
|
+
for (const turn of this._activeTurns) {
|
|
71771
|
+
if (turn.convId && (turn.groupId ? this._isNonDmConversation(turn.convId) : !this._isOwnDmConversation(turn.convId))) continue;
|
|
71772
|
+
const gid = this._turnGroup(turn);
|
|
71773
|
+
const key = people?.keyOf(turn.convId, gid) ?? (gid ? `g:${gid}` : `c:${turn.convId}`);
|
|
71774
|
+
if (!out.has(key)) out.set(key, turn);
|
|
71775
|
+
}
|
|
71776
|
+
return out;
|
|
71777
|
+
}
|
|
71778
|
+
/**
|
|
71779
|
+
* The person an untargeted owner message is for (#1418), in order:
|
|
71780
|
+
*
|
|
71781
|
+
* 1. the turn this call chain belongs to — always, and only, that
|
|
71782
|
+
* conversation, reached on the group its message decrypted under. A turn
|
|
71783
|
+
* never borrows another conversation's turn: one it cannot place fails
|
|
71784
|
+
* closed to its own conversation. Work the turn left running (a timer, a
|
|
71785
|
+
* dispatch orphaned by the turn budget) stays with that person for
|
|
71786
|
+
* `PERSON_INVOLVED_WINDOW_MS` after the turn, then is proactive (4);
|
|
71787
|
+
* 2. with no turn context (a skill's HTTP call), the one person with a turn
|
|
71788
|
+
* in progress;
|
|
71789
|
+
* 3. the last inbound 1:1 message, if it is recent — a reply produced in
|
|
71790
|
+
* response to it;
|
|
71791
|
+
* 4. otherwise the content is proactive: the PRIMARY conversation's person.
|
|
71792
|
+
*/
|
|
71793
|
+
_involvedPerson() {
|
|
71794
|
+
const person = (convId, groupId, reason) => ({
|
|
71795
|
+
convId,
|
|
71796
|
+
groupId: groupId ?? this._attestedGroupOf(convId) ?? (convId ? this._sessionGroupIds.get(convId) : void 0),
|
|
71797
|
+
reason
|
|
71798
|
+
});
|
|
71799
|
+
const turn = this._currentTurn();
|
|
71800
|
+
if (turn && turn !== "expired") {
|
|
71801
|
+
return person(turn.convId ?? this._conversationOfGroup(turn.groupId), turn.groupId, turn.ended ? "outlived-turn" : "turn");
|
|
71802
|
+
}
|
|
71803
|
+
if (turn === "expired") return this._primaryPerson();
|
|
71804
|
+
const active = this._activeTurnPeople();
|
|
71805
|
+
if (active.size === 1) {
|
|
71806
|
+
const [only] = active.values();
|
|
71807
|
+
return person(only.convId ?? this._conversationOfGroup(only.groupId), only.groupId, "active-turn");
|
|
71808
|
+
}
|
|
71809
|
+
const last = this._lastInboundDm;
|
|
71810
|
+
if (active.size === 0 && last && Date.now() - last.at < PERSON_INVOLVED_WINDOW_MS) {
|
|
71811
|
+
return person(last.convId ?? this._conversationOfGroup(last.groupId), last.groupId, "last-inbound");
|
|
71812
|
+
}
|
|
71813
|
+
return this._primaryPerson();
|
|
71814
|
+
}
|
|
71815
|
+
/** The PRIMARY conversation's person — where proactive content goes. */
|
|
71816
|
+
_primaryPerson() {
|
|
71817
|
+
const primary = this._primaryConversationId || this._persisted?.primaryConversationId || void 0;
|
|
71818
|
+
const primaryGroup = (primary ? this._sessionGroupIds.get(primary) : void 0) ?? this._persisted?.groupId;
|
|
71819
|
+
return {
|
|
71820
|
+
convId: primary,
|
|
71821
|
+
groupId: primaryGroup ?? this._attestedGroupOf(primary),
|
|
71822
|
+
reason: "primary"
|
|
71823
|
+
};
|
|
71824
|
+
}
|
|
71825
|
+
/**
|
|
71826
|
+
* #1418 — would an untargeted owner send right now have to GUESS between
|
|
71827
|
+
* people? True only with no turn context while two or more people have a
|
|
71828
|
+
* turn in progress. The local HTTP API refuses such a request (409) and
|
|
71829
|
+
* asks for a conversation instead of picking one.
|
|
71830
|
+
*/
|
|
71831
|
+
isUntargetedOwnerAmbiguous(options) {
|
|
71832
|
+
if (options?.conversationId !== void 0 || options?.audience === "everyone") return false;
|
|
71833
|
+
if (this._currentTurn()) return false;
|
|
71834
|
+
if (!this._isMultiPerson()) return false;
|
|
71835
|
+
return this._activeTurnPeople().size > 1;
|
|
71836
|
+
}
|
|
71837
|
+
/**
|
|
71838
|
+
* Who an UNTARGETED owner send reaches, or `null` for "every session, as
|
|
71839
|
+
* before". `null` when the caller chose `audience: "everyone"`, and when the
|
|
71840
|
+
* agent has one person (or cannot tell how many) — nothing to choose
|
|
71841
|
+
* between, so its recipients are exactly what they always were.
|
|
71842
|
+
*/
|
|
71843
|
+
_untargetedAudience(options) {
|
|
71844
|
+
if (options?.conversationId !== void 0) return null;
|
|
71845
|
+
if (options?.audience === "everyone") return null;
|
|
71846
|
+
if (!this._isMultiPerson()) return null;
|
|
71847
|
+
return this._involvedPerson();
|
|
71848
|
+
}
|
|
71849
|
+
/** A stable name for who an untargeted owner send reaches right now, or undefined when that is "everyone, as before". */
|
|
71850
|
+
_audienceTag(options) {
|
|
71851
|
+
if (options?.audience === "everyone") return "everyone";
|
|
71852
|
+
const person = this._untargetedAudience(options);
|
|
71853
|
+
return person ? `person:${person.groupId ?? person.convId ?? ""}` : void 0;
|
|
71854
|
+
}
|
|
71855
|
+
/** Does conversation `convId` belong to `person`? A conversation nothing ties to them fails closed. */
|
|
71856
|
+
_isPersonsConversation(person, convId) {
|
|
71857
|
+
if (convId === person.convId) return true;
|
|
71858
|
+
const gid = this._sessionGroupIds.get(convId);
|
|
71859
|
+
if (gid !== void 0 && gid === person.groupId) return true;
|
|
71860
|
+
const people = this._dmPeople();
|
|
71861
|
+
const theirs = people?.keyOf(person.convId, person.groupId);
|
|
71862
|
+
return theirs !== void 0 && people.keyOf(convId, gid) === theirs;
|
|
71863
|
+
}
|
|
71864
|
+
/**
|
|
71865
|
+
* #1418: the Double Ratchet sessions an owner-bound FILE (attachment or
|
|
71866
|
+
* artifact) goes to, bucketed by the conversation its blob is uploaded
|
|
71867
|
+
* under. The blob is uploaded under a conversation of the person who gets
|
|
71868
|
+
* it — the backend only lets that conversation's participants download it —
|
|
71869
|
+
* so an explicit "everyone" uploads once per person.
|
|
71870
|
+
*/
|
|
71871
|
+
_ownerFileRecipients(routing) {
|
|
71872
|
+
const roomConvIds = /* @__PURE__ */ new Set();
|
|
71873
|
+
for (const room of Object.values(this._persisted?.rooms ?? {})) {
|
|
71874
|
+
for (const cid of room.conversationIds ?? []) roomConvIds.add(cid);
|
|
71875
|
+
}
|
|
71876
|
+
const live = [...this._sessions].filter(([convId, session2]) => session2.activated && !roomConvIds.has(convId)).map(([convId]) => convId);
|
|
71877
|
+
const person = routing?.conversationId !== void 0 ? { convId: routing.conversationId, groupId: this._sessionGroupIds.get(routing.conversationId), reason: "target" } : this._untargetedAudience(routing);
|
|
71878
|
+
if (person) {
|
|
71879
|
+
const convIds = live.filter((convId) => this._isPersonsConversation(person, convId));
|
|
71880
|
+
const uploadConvId = person.convId ?? convIds[0];
|
|
71881
|
+
return uploadConvId && convIds.length > 0 ? [{ uploadConvId, convIds }] : [];
|
|
71882
|
+
}
|
|
71883
|
+
if (live.length === 0) return [];
|
|
71884
|
+
if (!this._isMultiPerson()) {
|
|
71885
|
+
return [{ uploadConvId: this._primaryConversationId, convIds: live }];
|
|
71886
|
+
}
|
|
71887
|
+
const people = this._dmPeople();
|
|
71888
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
71889
|
+
for (const convId of live) {
|
|
71890
|
+
const gid = this._sessionGroupIds.get(convId);
|
|
71891
|
+
const key = people?.keyOf(convId, gid) ?? gid ?? `c:${convId}`;
|
|
71892
|
+
buckets.set(key, [...buckets.get(key) ?? [], convId]);
|
|
71893
|
+
}
|
|
71894
|
+
return [...buckets.values()].map((convIds) => ({
|
|
71895
|
+
uploadConvId: convIds.includes(this._primaryConversationId) ? this._primaryConversationId : convIds[0],
|
|
71896
|
+
convIds
|
|
71897
|
+
}));
|
|
71898
|
+
}
|
|
71451
71899
|
/** The group a DM history entry belongs to (see the forms above). */
|
|
71452
71900
|
_dmEntryScope(entry, known) {
|
|
71453
71901
|
const t2 = entry.topicId ?? "";
|
|
@@ -72019,6 +72467,7 @@ ${text}`;
|
|
|
72019
72467
|
Promise.resolve().then(() => (init_openclaw_compat(), openclaw_compat_exports)).then(({ requestHeartbeatNow: requestHeartbeatNow2 }) => requestHeartbeatNow2({ reason: "channel-send" })).catch(() => {
|
|
72020
72468
|
});
|
|
72021
72469
|
const targetConvId = options?.conversationId;
|
|
72470
|
+
const audience = this._untargetedAudience(options);
|
|
72022
72471
|
const explicitTopicId = options?.topicId;
|
|
72023
72472
|
const targeted = targetConvId !== void 0;
|
|
72024
72473
|
const frameHistoryContexts = [];
|
|
@@ -72057,7 +72506,7 @@ ${text}`;
|
|
|
72057
72506
|
if (this._persisted?.mlsGroups && this._state === "ready" && this._ws) {
|
|
72058
72507
|
const targetSharedGid = targetConvId ? this._sessionGroupIds?.get(targetConvId) : void 0;
|
|
72059
72508
|
console.log(
|
|
72060
|
-
`[SecureChannel] send(): considering ${Object.keys(this._persisted.mlsGroups).length} shared group(s); targetConvId=${targetConvId ? targetConvId.slice(0, 8) : "(none \u2014
|
|
72509
|
+
`[SecureChannel] send(): considering ${Object.keys(this._persisted.mlsGroups).length} shared group(s); targetConvId=${targetConvId ? targetConvId.slice(0, 8) : audience ? `(none \u2014 person involved: ${audience.reason})` : "(none \u2014 everyone)"} targetSharedGid=${targetSharedGid ? targetSharedGid.slice(0, 8) : audience?.groupId ? audience.groupId.slice(0, 8) : "(none)"}`
|
|
72061
72510
|
);
|
|
72062
72511
|
const skipped = [];
|
|
72063
72512
|
for (const [gid, entry] of Object.entries(this._persisted.mlsGroups)) {
|
|
@@ -72065,6 +72514,10 @@ ${text}`;
|
|
|
72065
72514
|
skipped.push(`${gid.slice(0, 8)}:not-target`);
|
|
72066
72515
|
continue;
|
|
72067
72516
|
}
|
|
72517
|
+
if (audience && gid !== audience.groupId) {
|
|
72518
|
+
skipped.push(`${gid.slice(0, 8)}:not-involved`);
|
|
72519
|
+
continue;
|
|
72520
|
+
}
|
|
72068
72521
|
if (!entry.mlsGroupId) {
|
|
72069
72522
|
skipped.push(`${gid.slice(0, 8)}:no-mlsGroupId`);
|
|
72070
72523
|
continue;
|
|
@@ -72121,6 +72574,7 @@ ${text}`;
|
|
|
72121
72574
|
if (!session2.activated) continue;
|
|
72122
72575
|
if (roomConvIds.has(convId)) continue;
|
|
72123
72576
|
if (targetConvId && convId !== targetConvId) continue;
|
|
72577
|
+
if (audience && !this._isPersonsConversation(audience, convId)) continue;
|
|
72124
72578
|
const convGroupId = this._sessionGroupIds?.get(convId);
|
|
72125
72579
|
if (convGroupId && sentSharedGroupIds.has(convGroupId)) {
|
|
72126
72580
|
sentCount++;
|
|
@@ -72239,6 +72693,7 @@ ${text}`;
|
|
|
72239
72693
|
if (this._persisted?.mlsConversations && this._state === "ready" && this._ws) {
|
|
72240
72694
|
for (const [mlsConvId, entry] of Object.entries(this._persisted.mlsConversations)) {
|
|
72241
72695
|
if (targetConvId && mlsConvId !== targetConvId) continue;
|
|
72696
|
+
if (audience && !this._isPersonsConversation(audience, mlsConvId)) continue;
|
|
72242
72697
|
if (this._sessions.has(mlsConvId)) continue;
|
|
72243
72698
|
if (roomConvIds.has(mlsConvId)) continue;
|
|
72244
72699
|
const mlsOnlyConvGroupId = this._sessionGroupIds?.get(mlsConvId);
|
|
@@ -72362,7 +72817,7 @@ ${text}`;
|
|
|
72362
72817
|
*/
|
|
72363
72818
|
sendActivitySpan(spanData) {
|
|
72364
72819
|
if (!this._ws || this._ws.readyState !== WebSocket.OPEN) return;
|
|
72365
|
-
const pluginVersion = true ? "0.23.
|
|
72820
|
+
const pluginVersion = true ? "0.23.52" : "0.0.0-dev";
|
|
72366
72821
|
const agentName = this.config.agentName ?? "Agent";
|
|
72367
72822
|
const resource = {
|
|
72368
72823
|
"service.name": "agentvault-agent",
|
|
@@ -72414,7 +72869,7 @@ ${text}`;
|
|
|
72414
72869
|
* Builds a structured envelope with decision metadata and sends it
|
|
72415
72870
|
* as a high-priority message. Returns the generated decision_id.
|
|
72416
72871
|
*/
|
|
72417
|
-
async sendDecisionRequest(request) {
|
|
72872
|
+
async sendDecisionRequest(request, routing) {
|
|
72418
72873
|
const decision_id = `dec_${randomUUID4().replace(/-/g, "").slice(0, 16)}`;
|
|
72419
72874
|
const payload = JSON.stringify({
|
|
72420
72875
|
type: "message",
|
|
@@ -72425,6 +72880,8 @@ ${text}`;
|
|
|
72425
72880
|
}
|
|
72426
72881
|
});
|
|
72427
72882
|
await this.send(payload, {
|
|
72883
|
+
conversationId: routing?.conversationId,
|
|
72884
|
+
audience: routing?.audience,
|
|
72428
72885
|
messageType: "decision_request",
|
|
72429
72886
|
priority: "high",
|
|
72430
72887
|
metadata: {
|
|
@@ -72831,6 +73288,7 @@ ${text}`;
|
|
|
72831
73288
|
const jwt = this._deviceJwt ?? this._persisted?.deviceJwt;
|
|
72832
73289
|
if (!jwt || !this._persisted) return false;
|
|
72833
73290
|
let rows;
|
|
73291
|
+
const reconcileStartedAt = Date.now();
|
|
72834
73292
|
try {
|
|
72835
73293
|
const res = await fetch(`${this.config.apiUrl}/api/v1/conversations`, {
|
|
72836
73294
|
headers: { Authorization: `Bearer ${jwt}` }
|
|
@@ -72859,6 +73317,19 @@ ${text}`;
|
|
|
72859
73317
|
}
|
|
72860
73318
|
this._sessionGroupIds = new Map(mine.map((r2) => [r2.id, r2.group_id]));
|
|
72861
73319
|
this._persisted.conversationGroupIds = Object.fromEntries(this._sessionGroupIds);
|
|
73320
|
+
{
|
|
73321
|
+
const convs = new Set(mine.map((r2) => r2.id));
|
|
73322
|
+
const groups = new Set(mine.map((r2) => r2.group_id));
|
|
73323
|
+
this._lastReconcile = { at: reconcileStartedAt, convs, groups };
|
|
73324
|
+
for (const [key, a2] of this._attestedInbound) {
|
|
73325
|
+
if (a2.at > reconcileStartedAt) continue;
|
|
73326
|
+
if (a2.convId && convs.has(a2.convId) || a2.groupId && groups.has(a2.groupId)) continue;
|
|
73327
|
+
this._attestedInbound.delete(key);
|
|
73328
|
+
}
|
|
73329
|
+
for (const [gid, at] of this._welcomedUnmapped) {
|
|
73330
|
+
if (at <= reconcileStartedAt) this._welcomedUnmapped.delete(gid);
|
|
73331
|
+
}
|
|
73332
|
+
}
|
|
72862
73333
|
const joined = mine.find((r2) => this._persisted.mlsGroups?.[r2.group_id]);
|
|
72863
73334
|
const primary = mine.find((r2) => r2.id === this._persisted.primaryConversationId) ?? joined ?? mine[0];
|
|
72864
73335
|
if (!mine.some((r2) => r2.id === this._persisted.primaryConversationId)) {
|
|
@@ -73052,7 +73523,7 @@ ${text}`;
|
|
|
73052
73523
|
}
|
|
73053
73524
|
this._heartbeatCallback = null;
|
|
73054
73525
|
}
|
|
73055
|
-
async sendStatusAlert(alert) {
|
|
73526
|
+
async sendStatusAlert(alert, routing) {
|
|
73056
73527
|
const priority = alert.severity === "error" || alert.severity === "critical" ? "high" : "normal";
|
|
73057
73528
|
const envelope = {
|
|
73058
73529
|
title: alert.title,
|
|
@@ -73066,52 +73537,61 @@ ${text}`;
|
|
|
73066
73537
|
await this.send(
|
|
73067
73538
|
JSON.stringify(envelope),
|
|
73068
73539
|
{
|
|
73540
|
+
conversationId: routing?.conversationId,
|
|
73541
|
+
audience: routing?.audience,
|
|
73069
73542
|
messageType: "status_alert",
|
|
73070
73543
|
priority,
|
|
73071
73544
|
metadata: { severity: alert.severity }
|
|
73072
73545
|
}
|
|
73073
73546
|
);
|
|
73074
73547
|
}
|
|
73075
|
-
async sendArtifact(artifact) {
|
|
73548
|
+
async sendArtifact(artifact, routing) {
|
|
73076
73549
|
if (this._state !== "ready" || this._sessions.size === 0 || !this._ws) {
|
|
73077
73550
|
throw new Error("Channel is not ready");
|
|
73078
73551
|
}
|
|
73079
|
-
const attachMeta = await this._uploadAttachment(artifact.filePath, this._primaryConversationId);
|
|
73080
|
-
const envelope = JSON.stringify({
|
|
73081
|
-
type: "artifact",
|
|
73082
|
-
blob_id: attachMeta.blobId,
|
|
73083
|
-
blob_url: attachMeta.blobUrl,
|
|
73084
|
-
filename: artifact.filename,
|
|
73085
|
-
mime_type: artifact.mimeType,
|
|
73086
|
-
size_bytes: attachMeta.size,
|
|
73087
|
-
description: artifact.description,
|
|
73088
|
-
attachment: attachMeta
|
|
73089
|
-
});
|
|
73090
73552
|
const messageGroupId = randomUUID4();
|
|
73091
73553
|
const pendingWsSends = [];
|
|
73092
|
-
|
|
73093
|
-
|
|
73094
|
-
|
|
73095
|
-
|
|
73096
|
-
|
|
73097
|
-
|
|
73098
|
-
|
|
73099
|
-
|
|
73100
|
-
|
|
73101
|
-
|
|
73102
|
-
|
|
73103
|
-
|
|
73104
|
-
|
|
73105
|
-
|
|
73106
|
-
|
|
73107
|
-
|
|
73554
|
+
const buckets = this._ownerFileRecipients(routing);
|
|
73555
|
+
if (buckets.length === 0) {
|
|
73556
|
+
console.warn("[SecureChannel] sendArtifact(): no live session for the person involved \u2014 nothing sent");
|
|
73557
|
+
throw new Error("No conversation is ready to receive this file");
|
|
73558
|
+
}
|
|
73559
|
+
for (const bucket of buckets) {
|
|
73560
|
+
const attachMeta = await this._uploadAttachment(artifact.filePath, bucket.uploadConvId);
|
|
73561
|
+
const envelope = JSON.stringify({
|
|
73562
|
+
type: "artifact",
|
|
73563
|
+
blob_id: attachMeta.blobId,
|
|
73564
|
+
blob_url: attachMeta.blobUrl,
|
|
73565
|
+
filename: artifact.filename,
|
|
73566
|
+
mime_type: artifact.mimeType,
|
|
73567
|
+
size_bytes: attachMeta.size,
|
|
73568
|
+
description: artifact.description,
|
|
73569
|
+
attachment: attachMeta
|
|
73570
|
+
});
|
|
73571
|
+
for (const convId of bucket.convIds) {
|
|
73572
|
+
const session2 = this._sessions.get(convId);
|
|
73573
|
+
const encrypted = session2.ratchet.encrypt(envelope);
|
|
73574
|
+
const transport = encryptedMessageToTransport(encrypted);
|
|
73575
|
+
pendingWsSends.push(
|
|
73576
|
+
JSON.stringify({
|
|
73577
|
+
event: "message",
|
|
73578
|
+
data: {
|
|
73579
|
+
conversation_id: convId,
|
|
73580
|
+
header_blob: transport.header_blob,
|
|
73581
|
+
ciphertext: transport.ciphertext,
|
|
73582
|
+
message_group_id: messageGroupId,
|
|
73583
|
+
message_type: "artifact_share"
|
|
73584
|
+
}
|
|
73585
|
+
})
|
|
73586
|
+
);
|
|
73587
|
+
}
|
|
73108
73588
|
}
|
|
73109
73589
|
await this._persistState();
|
|
73110
73590
|
for (const frame of pendingWsSends) {
|
|
73111
73591
|
this._ws.send(frame);
|
|
73112
73592
|
}
|
|
73113
73593
|
}
|
|
73114
|
-
async sendActionConfirmation(confirmation) {
|
|
73594
|
+
async sendActionConfirmation(confirmation, routing) {
|
|
73115
73595
|
const envelope = {
|
|
73116
73596
|
type: "action_confirmation",
|
|
73117
73597
|
action: confirmation.action,
|
|
@@ -73122,6 +73602,8 @@ ${text}`;
|
|
|
73122
73602
|
await this.send(
|
|
73123
73603
|
JSON.stringify(envelope),
|
|
73124
73604
|
{
|
|
73605
|
+
conversationId: routing?.conversationId,
|
|
73606
|
+
audience: routing?.audience,
|
|
73125
73607
|
messageType: "action_confirmation",
|
|
73126
73608
|
metadata: { status: confirmation.status }
|
|
73127
73609
|
}
|
|
@@ -73227,9 +73709,23 @@ ${text}`;
|
|
|
73227
73709
|
} else {
|
|
73228
73710
|
return { ok: false, destination: { kind: "owner" }, error: "Unknown target kind", timestamp: ts };
|
|
73229
73711
|
}
|
|
73712
|
+
if (resolved.kind === "owner" && options?.refuseIfAmbiguous && this.isUntargetedOwnerAmbiguous(options)) {
|
|
73713
|
+
console.log(`[deliver] target=owner content=${content.type} result=REFUSED: ambiguous (several people mid-turn)`);
|
|
73714
|
+
return { ok: false, ambiguous: true, destination: resolved, error: AMBIGUOUS_OWNER_ERROR, timestamp: ts };
|
|
73715
|
+
}
|
|
73230
73716
|
let dedupeKey = null;
|
|
73231
73717
|
try {
|
|
73232
|
-
|
|
73718
|
+
let audienceTag;
|
|
73719
|
+
try {
|
|
73720
|
+
audienceTag = resolved.kind === "owner" && options?.conversationId === void 0 ? this._audienceTag(options) : void 0;
|
|
73721
|
+
} catch {
|
|
73722
|
+
audienceTag = void 0;
|
|
73723
|
+
}
|
|
73724
|
+
dedupeKey = outboundDedupeKey(
|
|
73725
|
+
resolved,
|
|
73726
|
+
content,
|
|
73727
|
+
audienceTag ? { ...options, conversationId: audienceTag } : options
|
|
73728
|
+
);
|
|
73233
73729
|
if (dedupeKey) {
|
|
73234
73730
|
const now = Date.now();
|
|
73235
73731
|
const recent = this._recentDeliveries ??= /* @__PURE__ */ new Map();
|
|
@@ -73249,6 +73745,10 @@ ${text}`;
|
|
|
73249
73745
|
}
|
|
73250
73746
|
try {
|
|
73251
73747
|
let decisionId;
|
|
73748
|
+
const ownerRouting = {
|
|
73749
|
+
conversationId: options?.conversationId,
|
|
73750
|
+
audience: options?.audience
|
|
73751
|
+
};
|
|
73252
73752
|
if (content.type === "text") {
|
|
73253
73753
|
if (resolved.kind === "room") {
|
|
73254
73754
|
await this.sendToRoom(resolved.id, content.text, {
|
|
@@ -73267,6 +73767,7 @@ ${text}`;
|
|
|
73267
73767
|
} else {
|
|
73268
73768
|
await this.send(content.text, {
|
|
73269
73769
|
conversationId: options?.conversationId,
|
|
73770
|
+
audience: options?.audience,
|
|
73270
73771
|
topicId: options?.topicId,
|
|
73271
73772
|
messageType: options?.metadata?.message_type,
|
|
73272
73773
|
priority: options?.priority,
|
|
@@ -73279,7 +73780,7 @@ ${text}`;
|
|
|
73279
73780
|
console.log(`[deliver] target=${resolved.kind}:${resolved.id} content=decision_request result=FAIL: ${err}`);
|
|
73280
73781
|
return { ok: false, destination: resolved, error: err, timestamp: ts };
|
|
73281
73782
|
}
|
|
73282
|
-
decisionId = await this.sendDecisionRequest(content.request);
|
|
73783
|
+
decisionId = await this.sendDecisionRequest(content.request, ownerRouting);
|
|
73283
73784
|
} else if (content.type === "status_alert") {
|
|
73284
73785
|
if (resolved.kind === "room") {
|
|
73285
73786
|
const envelope = {
|
|
@@ -73297,7 +73798,7 @@ ${text}`;
|
|
|
73297
73798
|
metadata: { severity: content.alert.severity }
|
|
73298
73799
|
});
|
|
73299
73800
|
} else if (resolved.kind === "owner") {
|
|
73300
|
-
await this.sendStatusAlert(content.alert);
|
|
73801
|
+
await this.sendStatusAlert(content.alert, ownerRouting);
|
|
73301
73802
|
} else {
|
|
73302
73803
|
return { ok: false, destination: resolved, error: "Status alerts cannot be sent to A2A targets", timestamp: ts };
|
|
73303
73804
|
}
|
|
@@ -73305,7 +73806,7 @@ ${text}`;
|
|
|
73305
73806
|
if (resolved.kind === "room") {
|
|
73306
73807
|
await this.sendActionConfirmationToRoom(resolved.id, content.confirmation);
|
|
73307
73808
|
} else if (resolved.kind === "owner") {
|
|
73308
|
-
await this.sendActionConfirmation(content.confirmation);
|
|
73809
|
+
await this.sendActionConfirmation(content.confirmation, ownerRouting);
|
|
73309
73810
|
} else {
|
|
73310
73811
|
return { ok: false, destination: resolved, error: "Action confirmations cannot be sent to A2A targets", timestamp: ts };
|
|
73311
73812
|
}
|
|
@@ -73313,13 +73814,14 @@ ${text}`;
|
|
|
73313
73814
|
if (resolved.kind !== "owner") {
|
|
73314
73815
|
return { ok: false, destination: resolved, error: "Artifacts can only be sent to owner", timestamp: ts };
|
|
73315
73816
|
}
|
|
73316
|
-
await this.sendArtifact(content.artifact);
|
|
73817
|
+
await this.sendArtifact(content.artifact, ownerRouting);
|
|
73317
73818
|
} else if (content.type === "attachment") {
|
|
73318
73819
|
if (resolved.kind !== "owner") {
|
|
73319
73820
|
return { ok: false, destination: resolved, error: "Attachments can only be sent to owner", timestamp: ts };
|
|
73320
73821
|
}
|
|
73321
73822
|
await this.sendWithAttachment(content.text, content.filePath, {
|
|
73322
|
-
topicId: options?.topicId
|
|
73823
|
+
topicId: options?.topicId,
|
|
73824
|
+
...ownerRouting
|
|
73323
73825
|
});
|
|
73324
73826
|
}
|
|
73325
73827
|
const targetLabel = resolved.kind === "owner" ? "owner" : `${resolved.kind}:${resolved.id?.slice(0, 8)}...`;
|
|
@@ -74492,7 +74994,7 @@ ${text}`;
|
|
|
74492
74994
|
agentVersion: this.config.agentVersion ?? "0.0.0",
|
|
74493
74995
|
// __AV_VERSION__ is injected by esbuild from package.json at build time.
|
|
74494
74996
|
// Falls back to "0.0.0-dev" in non-bundled contexts (tests).
|
|
74495
|
-
pluginVersion: true ? "0.23.
|
|
74997
|
+
pluginVersion: true ? "0.23.52" : "0.0.0-dev"
|
|
74496
74998
|
});
|
|
74497
74999
|
this._telemetryReporter.startAutoFlush(3e4);
|
|
74498
75000
|
}
|
|
@@ -74820,7 +75322,7 @@ ${text}`;
|
|
|
74820
75322
|
agentVersion: this.config.agentVersion ?? "0.0.0",
|
|
74821
75323
|
// __AV_VERSION__ is injected by esbuild from package.json at build time.
|
|
74822
75324
|
// Falls back to "0.0.0-dev" in non-bundled contexts (tests).
|
|
74823
|
-
pluginVersion: true ? "0.23.
|
|
75325
|
+
pluginVersion: true ? "0.23.52" : "0.0.0-dev"
|
|
74824
75326
|
});
|
|
74825
75327
|
this._telemetryReporter.startAutoFlush(3e4);
|
|
74826
75328
|
}
|
|
@@ -75361,9 +75863,18 @@ ${text}`;
|
|
|
75361
75863
|
messageType,
|
|
75362
75864
|
{ groupId: dmGroupId, conversationId: convId }
|
|
75363
75865
|
);
|
|
75866
|
+
const dmConvId = convId ?? this._conversationOfGroup(dmGroupId);
|
|
75867
|
+
this._noteInboundDm(dmConvId, dmGroupId, { createdAt: data.created_at, senderDeviceId });
|
|
75868
|
+
this._reconcileForUnmappedGroup(dmGroupId);
|
|
75364
75869
|
const metadata = {
|
|
75365
75870
|
messageId: data.message_id ?? `mls_${Date.now()}`,
|
|
75366
|
-
|
|
75871
|
+
// A frame on a KNOWN group that no conversation maps yet is not the
|
|
75872
|
+
// primary person's: leave the conversation unnamed rather than hand
|
|
75873
|
+
// the reply to someone else; `conversationGroupId` still places it.
|
|
75874
|
+
conversationId: dmConvId ?? (dmGroupId ? void 0 : this._primaryConversationId),
|
|
75875
|
+
// #1418: the group this message decrypted under — attested, so a turn
|
|
75876
|
+
// answers here even when the local map is stale.
|
|
75877
|
+
conversationGroupId: dmGroupId,
|
|
75367
75878
|
timestamp: data.created_at ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
75368
75879
|
topicId,
|
|
75369
75880
|
// #621: positive attestation that this decrypted under the OWNER'S 1:1
|
|
@@ -75618,6 +76129,13 @@ ${messageText}`;
|
|
|
75618
76129
|
// envelope text before the fold; `emitText` is the folded copy.
|
|
75619
76130
|
caption: messageText
|
|
75620
76131
|
};
|
|
76132
|
+
if (!roomId) {
|
|
76133
|
+
this._noteInboundDm(convId, void 0, {
|
|
76134
|
+
createdAt: msgData.created_at,
|
|
76135
|
+
senderDeviceId: msgData.sender_device_id
|
|
76136
|
+
});
|
|
76137
|
+
this._reconcileForUnmappedConversation(convId);
|
|
76138
|
+
}
|
|
75621
76139
|
this.emit("message", emitText, metadata);
|
|
75622
76140
|
Promise.resolve(this.config.onMessage?.(emitText, metadata)).catch((err) => {
|
|
75623
76141
|
console.error("[SecureChannel] onMessage callback error:", err);
|
|
@@ -75766,34 +76284,41 @@ ${baseText}`;
|
|
|
75766
76284
|
if (this._state !== "ready" || this._sessions.size === 0 || !this._ws) {
|
|
75767
76285
|
throw new Error("Channel is not ready");
|
|
75768
76286
|
}
|
|
75769
|
-
const attachMeta = await this._uploadAttachment(filePath, this._primaryConversationId);
|
|
75770
76287
|
const messageGroupId = randomUUID4();
|
|
75771
76288
|
const pendingWsSends = [];
|
|
75772
76289
|
const frameHistoryContexts = [];
|
|
75773
|
-
|
|
75774
|
-
|
|
75775
|
-
|
|
75776
|
-
|
|
75777
|
-
|
|
75778
|
-
|
|
75779
|
-
|
|
75780
|
-
|
|
75781
|
-
|
|
75782
|
-
|
|
75783
|
-
|
|
75784
|
-
|
|
75785
|
-
|
|
75786
|
-
|
|
75787
|
-
|
|
75788
|
-
|
|
75789
|
-
|
|
75790
|
-
|
|
75791
|
-
|
|
75792
|
-
|
|
75793
|
-
|
|
75794
|
-
|
|
75795
|
-
|
|
75796
|
-
|
|
76290
|
+
const buckets = this._ownerFileRecipients(options);
|
|
76291
|
+
if (buckets.length === 0) {
|
|
76292
|
+
console.warn("[SecureChannel] sendWithAttachment(): no live session for the person involved \u2014 nothing sent");
|
|
76293
|
+
throw new Error("No conversation is ready to receive this file");
|
|
76294
|
+
}
|
|
76295
|
+
for (const bucket of buckets) {
|
|
76296
|
+
const attachMeta = await this._uploadAttachment(filePath, bucket.uploadConvId);
|
|
76297
|
+
for (const convId of bucket.convIds) {
|
|
76298
|
+
const session2 = this._sessions.get(convId);
|
|
76299
|
+
const topicId = this._topicForFrame(void 0, convId, options?.topicId, false, false);
|
|
76300
|
+
const envelope = JSON.stringify({
|
|
76301
|
+
type: "message",
|
|
76302
|
+
text: plaintext,
|
|
76303
|
+
topicId,
|
|
76304
|
+
attachment: attachMeta
|
|
76305
|
+
});
|
|
76306
|
+
const encrypted = session2.ratchet.encrypt(envelope);
|
|
76307
|
+
const transport = encryptedMessageToTransport(encrypted);
|
|
76308
|
+
pendingWsSends.push(
|
|
76309
|
+
JSON.stringify({
|
|
76310
|
+
event: "message",
|
|
76311
|
+
data: {
|
|
76312
|
+
conversation_id: convId,
|
|
76313
|
+
header_blob: transport.header_blob,
|
|
76314
|
+
ciphertext: transport.ciphertext,
|
|
76315
|
+
message_group_id: messageGroupId,
|
|
76316
|
+
topic_id: topicId
|
|
76317
|
+
}
|
|
76318
|
+
})
|
|
76319
|
+
);
|
|
76320
|
+
frameHistoryContexts.push(this._dmHistoryContext(topicId, void 0, convId));
|
|
76321
|
+
}
|
|
75797
76322
|
}
|
|
75798
76323
|
await this._persistState();
|
|
75799
76324
|
let deliveredFrames = 0;
|
|
@@ -75953,10 +76478,15 @@ ${baseText}`;
|
|
|
75953
76478
|
`[SecureChannel] New owner device linked: ${event.owner_device_id.slice(0, 8)}...`
|
|
75954
76479
|
);
|
|
75955
76480
|
try {
|
|
76481
|
+
if (event.group_id && !this._sessionGroupIds.has(event.conversation_id)) {
|
|
76482
|
+
this._sessionGroupIds.set(event.conversation_id, event.group_id);
|
|
76483
|
+
this._persisted.conversationGroupIds = Object.fromEntries(this._sessionGroupIds);
|
|
76484
|
+
}
|
|
75956
76485
|
if (!event.owner_identity_public_key) {
|
|
75957
76486
|
console.error(
|
|
75958
76487
|
`[SecureChannel] device_linked event missing owner keys for conv ${event.conversation_id.slice(0, 8)}...`
|
|
75959
76488
|
);
|
|
76489
|
+
await this._persistState();
|
|
75960
76490
|
return;
|
|
75961
76491
|
}
|
|
75962
76492
|
const identity = this._persisted.identityKeypair;
|
|
@@ -75991,10 +76521,6 @@ ${baseText}`;
|
|
|
75991
76521
|
if (event.owner_hub_id) {
|
|
75992
76522
|
this._persisted.ownerHubId = event.owner_hub_id;
|
|
75993
76523
|
}
|
|
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
|
-
}
|
|
75998
76524
|
await this._persistState();
|
|
75999
76525
|
console.log(
|
|
76000
76526
|
`[SecureChannel] Session initialized for device ${event.owner_device_id.slice(0, 8)}... (conv ${event.conversation_id.slice(0, 8)}...)`
|
|
@@ -77664,6 +78190,10 @@ ${baseText}`;
|
|
|
77664
78190
|
await this._persistState();
|
|
77665
78191
|
}
|
|
77666
78192
|
console.log(`[SecureChannel] Joined shared 1:1 MLS group for group ${conversationGroupId.slice(0, 8)} via Welcome (epoch=${mgr.epoch})`);
|
|
78193
|
+
if (!this._isMappedGroup(conversationGroupId)) {
|
|
78194
|
+
this._welcomedUnmapped.set(conversationGroupId, Date.now());
|
|
78195
|
+
}
|
|
78196
|
+
this._reconcileForUnmappedGroup(conversationGroupId);
|
|
77667
78197
|
await this._flushMlsHold(conversationGroupId);
|
|
77668
78198
|
return;
|
|
77669
78199
|
}
|
|
@@ -78305,6 +78835,7 @@ ${baseText}`;
|
|
|
78305
78835
|
ownerDm1to1: true,
|
|
78306
78836
|
...decisionReply ? { messageType: "decision_response", decision: decisionReply } : {}
|
|
78307
78837
|
};
|
|
78838
|
+
this._noteInboundDm(msg.conversation_id, void 0, { createdAt: msg.created_at, senderDeviceId: msg.sender_device_id });
|
|
78308
78839
|
this.emit("message", messageText, metadata);
|
|
78309
78840
|
Promise.resolve(this.config.onMessage?.(messageText, metadata)).catch((err) => {
|
|
78310
78841
|
console.error("[SecureChannel] onMessage callback error:", err);
|
|
@@ -78911,6 +79442,7 @@ ${baseText}`;
|
|
|
78911
79442
|
ownerDm1to1: true,
|
|
78912
79443
|
...decisionReply ? { messageType: "decision_response", decision: decisionReply } : {}
|
|
78913
79444
|
};
|
|
79445
|
+
this._noteInboundDm(msg.conversation_id, void 0, { createdAt: msg.created_at, senderDeviceId: msg.sender_device_id });
|
|
78914
79446
|
this.emit("message", messageText, metadata);
|
|
78915
79447
|
Promise.resolve(this.config.onMessage?.(messageText, metadata)).catch((err) => {
|
|
78916
79448
|
console.error("[SecureChannel] onMessage callback error:", err);
|
|
@@ -79231,6 +79763,7 @@ ${baseText}`;
|
|
|
79231
79763
|
ownerDm1to1: true,
|
|
79232
79764
|
...decisionReply ? { messageType: "decision_response", decision: decisionReply } : {}
|
|
79233
79765
|
};
|
|
79766
|
+
this._noteInboundDm(msg.conversation_id, void 0, { createdAt: msg.created_at, senderDeviceId: msg.sender_device_id });
|
|
79234
79767
|
this.emit("message", messageText, metadata);
|
|
79235
79768
|
Promise.resolve(this.config.onMessage?.(messageText, metadata)).catch((err) => {
|
|
79236
79769
|
console.error("[SecureChannel] onMessage callback error:", err);
|
|
@@ -80251,7 +80784,7 @@ ${actionsText}`);
|
|
|
80251
80784
|
"use strict";
|
|
80252
80785
|
init_llm_response_parser();
|
|
80253
80786
|
init_llm_cost();
|
|
80254
|
-
traceStore = new
|
|
80787
|
+
traceStore = new AsyncLocalStorage2();
|
|
80255
80788
|
}
|
|
80256
80789
|
});
|
|
80257
80790
|
init_tool_audit = __esm2({
|
|
@@ -100999,7 +101532,7 @@ data:
|
|
|
100999
101532
|
await init_skill_telemetry();
|
|
101000
101533
|
await init_policy_enforcer();
|
|
101001
101534
|
init_room_protocol();
|
|
101002
|
-
VERSION = true ? "0.23.
|
|
101535
|
+
VERSION = true ? "0.23.52" : "0.0.0-dev";
|
|
101003
101536
|
}
|
|
101004
101537
|
});
|
|
101005
101538
|
await init_index();
|
|
@@ -102860,13 +103393,28 @@ var RoomHushState = class {
|
|
|
102860
103393
|
return t2 !== void 0 && now < t2;
|
|
102861
103394
|
}
|
|
102862
103395
|
};
|
|
103396
|
+
async function sendDm(channel, t2, text) {
|
|
103397
|
+
if ((t2.conversationId || t2.groupId) && typeof channel.runForConversation === "function") {
|
|
103398
|
+
await channel.runForConversation(
|
|
103399
|
+
t2.conversationId,
|
|
103400
|
+
() => channel.send(text),
|
|
103401
|
+
t2.groupId ? { groupId: t2.groupId } : void 0
|
|
103402
|
+
);
|
|
103403
|
+
} else {
|
|
103404
|
+
await channel.send(text);
|
|
103405
|
+
}
|
|
103406
|
+
}
|
|
102863
103407
|
var ActiveTarget = class {
|
|
102864
103408
|
target = null;
|
|
102865
103409
|
setRoom(roomId) {
|
|
102866
103410
|
this.target = { kind: "room", roomId };
|
|
102867
103411
|
}
|
|
102868
|
-
setDm() {
|
|
102869
|
-
this.target = {
|
|
103412
|
+
setDm(conversationId, groupId) {
|
|
103413
|
+
this.target = {
|
|
103414
|
+
kind: "dm",
|
|
103415
|
+
...conversationId ? { conversationId } : {},
|
|
103416
|
+
...groupId ? { groupId } : {}
|
|
103417
|
+
};
|
|
102870
103418
|
}
|
|
102871
103419
|
get current() {
|
|
102872
103420
|
return this.target;
|
|
@@ -102886,7 +103434,7 @@ var ActiveTarget = class {
|
|
|
102886
103434
|
if (!t2) return;
|
|
102887
103435
|
try {
|
|
102888
103436
|
if (t2.kind === "room") await channel.sendToRoom(t2.roomId, text);
|
|
102889
|
-
else await channel
|
|
103437
|
+
else await sendDm(channel, t2, text);
|
|
102890
103438
|
log(`said to ${where}`);
|
|
102891
103439
|
} catch (err) {
|
|
102892
103440
|
log(`send failed to ${where}: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -102995,7 +103543,7 @@ function wireBridge(channel, session2, target, opts = {}) {
|
|
|
102995
103543
|
} else {
|
|
102996
103544
|
log("inbound 1:1 DM from owner");
|
|
102997
103545
|
}
|
|
102998
|
-
target.setDm();
|
|
103546
|
+
target.setDm(metadata?.conversationId, metadata?.conversationGroupId);
|
|
102999
103547
|
session2.push(text, target.snapshotReply(channel, log), { autoReplyOnText: ownerAttested });
|
|
103000
103548
|
});
|
|
103001
103549
|
}
|
|
@@ -103100,7 +103648,7 @@ async function main() {
|
|
|
103100
103648
|
const info = parseInfoFlags(process.argv.slice(2));
|
|
103101
103649
|
if (info.showVersion || info.showHelp) {
|
|
103102
103650
|
const version2 = buildClientVersion2(
|
|
103103
|
-
true ? "0.4.
|
|
103651
|
+
true ? "0.4.23" : void 0
|
|
103104
103652
|
);
|
|
103105
103653
|
if (info.showVersion) printLine(version2);
|
|
103106
103654
|
if (info.showHelp) {
|
|
@@ -103139,7 +103687,7 @@ async function main() {
|
|
|
103139
103687
|
process.exit(0);
|
|
103140
103688
|
}
|
|
103141
103689
|
const cfg = loadConfig(process.env, process.argv.slice(2));
|
|
103142
|
-
logLine(`[grok-bridge] version: ${true ? "0.4.
|
|
103690
|
+
logLine(`[grok-bridge] version: ${true ? "0.4.23" : "dev"}`);
|
|
103143
103691
|
mkdirSync7(cfg.workspaceDir, { recursive: true });
|
|
103144
103692
|
mkdirSync7(cfg.fenceHome, { recursive: true });
|
|
103145
103693
|
seedFenceCredential({
|
|
@@ -103154,7 +103702,7 @@ async function main() {
|
|
|
103154
103702
|
agentName: cfg.agentName,
|
|
103155
103703
|
platform: "node",
|
|
103156
103704
|
clientVersion: buildClientVersion2(
|
|
103157
|
-
true ? "0.4.
|
|
103705
|
+
true ? "0.4.23" : void 0
|
|
103158
103706
|
)
|
|
103159
103707
|
});
|
|
103160
103708
|
channelRef = channel;
|