wire-mesh-core 1.57.0 → 1.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/adapters/frame-codec.d.cts +1 -1
  2. package/dist/adapters/frame-codec.d.mts +1 -1
  3. package/dist/adapters/node-identity.d.cts +2 -2
  4. package/dist/adapters/node-identity.d.mts +2 -2
  5. package/dist/adapters/tcp-transport.d.cts +1 -1
  6. package/dist/adapters/tcp-transport.d.mts +1 -1
  7. package/dist/adapters/threshold-identity.d.cts +2 -2
  8. package/dist/adapters/threshold-identity.d.mts +2 -2
  9. package/dist/adapters/threshold-wasm.d.cts +1 -1
  10. package/dist/adapters/threshold-wasm.d.mts +1 -1
  11. package/dist/adapters/tls-transport.d.cts +1 -1
  12. package/dist/adapters/tls-transport.d.mts +1 -1
  13. package/dist/domain/async-queue.cjs +30 -0
  14. package/dist/domain/async-queue.d.cts +10 -0
  15. package/dist/domain/async-queue.d.mts +10 -0
  16. package/dist/domain/async-queue.mjs +29 -0
  17. package/dist/domain/bulk.d.cts +2 -2
  18. package/dist/domain/bulk.d.mts +2 -2
  19. package/dist/domain/capability-grant.d.cts +3 -3
  20. package/dist/domain/capability-grant.d.mts +3 -3
  21. package/dist/domain/capability-request.d.cts +2 -2
  22. package/dist/domain/capability-request.d.mts +2 -2
  23. package/dist/domain/data-sync.d.cts +2 -2
  24. package/dist/domain/data-sync.d.mts +2 -2
  25. package/dist/domain/device-id.d.cts +1 -1
  26. package/dist/domain/device-id.d.mts +1 -1
  27. package/dist/domain/direct-manage-request.d.cts +2 -2
  28. package/dist/domain/direct-manage-request.d.mts +2 -2
  29. package/dist/domain/gossip-expansion.d.cts +1 -1
  30. package/dist/domain/gossip-expansion.d.mts +1 -1
  31. package/dist/domain/gossip-extensions.cjs +4 -0
  32. package/dist/domain/gossip-extensions.d.cts +6 -0
  33. package/dist/domain/gossip-extensions.d.mts +6 -0
  34. package/dist/domain/gossip-extensions.mjs +2 -0
  35. package/dist/domain/grant-candidates.d.cts +1 -1
  36. package/dist/domain/grant-candidates.d.mts +1 -1
  37. package/dist/domain/handshake.d.cts +1 -1
  38. package/dist/domain/handshake.d.mts +1 -1
  39. package/dist/domain/mesh-session.cjs +30 -148
  40. package/dist/domain/mesh-session.d.cts +5 -3
  41. package/dist/domain/mesh-session.d.mts +5 -3
  42. package/dist/domain/mesh-session.mjs +25 -141
  43. package/dist/domain/notice-board.d.cts +3 -3
  44. package/dist/domain/notice-board.d.mts +3 -3
  45. package/dist/domain/path-trace.cjs +58 -0
  46. package/dist/domain/path-trace.d.cts +44 -0
  47. package/dist/domain/path-trace.d.mts +44 -0
  48. package/dist/domain/path-trace.mjs +52 -0
  49. package/dist/domain/ping-round-trips.cjs +38 -0
  50. package/dist/domain/ping-round-trips.d.cts +13 -0
  51. package/dist/domain/ping-round-trips.d.mts +13 -0
  52. package/dist/domain/ping-round-trips.mjs +37 -0
  53. package/dist/domain/relay-hub.d.cts +2 -2
  54. package/dist/domain/relay-hub.d.mts +2 -2
  55. package/dist/domain/relay-use-gate.d.cts +2 -2
  56. package/dist/domain/relay-use-gate.d.mts +2 -2
  57. package/dist/domain/revocation-view.d.cts +2 -2
  58. package/dist/domain/revocation-view.d.mts +2 -2
  59. package/dist/domain/room-rekey.d.cts +3 -3
  60. package/dist/domain/room-rekey.d.mts +3 -3
  61. package/dist/domain/room-token-verification.d.cts +1 -1
  62. package/dist/domain/room-token-verification.d.mts +1 -1
  63. package/dist/domain/room.d.cts +4 -4
  64. package/dist/domain/room.d.mts +4 -4
  65. package/dist/domain/shard-manifest.d.cts +1 -1
  66. package/dist/domain/shard-manifest.d.mts +1 -1
  67. package/dist/domain/tokens.d.cts +1 -1
  68. package/dist/domain/tokens.d.mts +1 -1
  69. package/dist/domain/topology-snapshot.cjs +39 -0
  70. package/dist/domain/topology-snapshot.d.cts +31 -0
  71. package/dist/domain/topology-snapshot.d.mts +31 -0
  72. package/dist/domain/topology-snapshot.mjs +37 -0
  73. package/dist/domain/topology.cjs +87 -0
  74. package/dist/domain/topology.d.cts +38 -0
  75. package/dist/domain/topology.d.mts +38 -0
  76. package/dist/domain/topology.mjs +81 -0
  77. package/dist/domain/webrtc-signaling.d.cts +2 -2
  78. package/dist/domain/webrtc-signaling.d.mts +2 -2
  79. package/dist/generated/protocol.cjs +11 -0
  80. package/dist/generated/protocol.d.cts +2 -2
  81. package/dist/generated/protocol.d.mts +2 -2
  82. package/dist/generated/protocol.mjs +10 -1
  83. package/dist/gossip-extensions-Cdy5mQhY.mjs +41 -0
  84. package/dist/gossip-extensions-Dr_T7hk_.cjs +78 -0
  85. package/dist/{identity-Br6e0Rx5.d.mts → identity-BRlM-Krs.d.cts} +1 -1
  86. package/dist/{identity-pOt5KxJB.d.cts → identity-DiuayfEd.d.mts} +1 -1
  87. package/dist/ports/identity.d.cts +1 -1
  88. package/dist/ports/identity.d.mts +1 -1
  89. package/dist/ports/transport.d.cts +1 -1
  90. package/dist/ports/transport.d.mts +1 -1
  91. package/dist/{protocol-D2Ue2nd2.d.cts → protocol-BnbpCk0Z.d.cts} +23 -1
  92. package/dist/{protocol-D2Ue2nd2.d.mts → protocol-BnbpCk0Z.d.mts} +23 -1
  93. package/dist/{room-token-verification-CNXMjIQd.d.cts → room-token-verification-D9ogJTO3.d.cts} +2 -2
  94. package/dist/{room-token-verification-ZHgJhnsu.d.mts → room-token-verification-NjaqYY4k.d.mts} +2 -2
  95. package/dist/{tokens-BtczHfrc.d.cts → tokens-BL2BzOmN.d.cts} +2 -2
  96. package/dist/{tokens-Hnq9oURj.d.mts → tokens-DtjdYS_a.d.mts} +2 -2
  97. package/dist/{transport-C5wU0UtA.d.mts → transport-BH8kGWXt.d.mts} +1 -1
  98. package/dist/{transport-fUY3alfO.d.cts → transport-Ca_ZyyZe.d.cts} +1 -1
  99. package/package.json +25 -1
@@ -0,0 +1,87 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_generated_protocol = require("../generated/protocol.cjs");
3
+ const require_gossip_extensions = require("../gossip-extensions-Dr_T7hk_.cjs");
4
+ //#region src/domain/topology.ts
5
+ /**
6
+ * Topology introspection (wire-mesh#180): assembling a connection graph out of every device's own self-reported `topology/peers` gossip extension (mesh-session.ts's buildSelfAdvert computes and injects it automatically -- nothing here writes to it), and answering the on-demand `topology.get` manage-command for a live, cache-bust read instead of a possibly-stale gossiped one. `topology:get` is deliberately ungated, per management.cddl's own comment on `topology-get` and this registry entry -- no token/scope check anywhere in this module, mirroring how core/room's room.join/room.invite are ungated in room-client.ts.
7
+ */
8
+ const TOPOLOGY_GET_CAPABILITY = "topology:get";
9
+ /** `topology:get`'s own registry scope kind (spec/registry/core-capabilities.md) -- fixed and uninteresting for an ungated, whole-node query, so sendTopologyGet hardcodes it rather than asking every caller to supply the same `{kind:"node"}` literal themselves. */
10
+ const TOPOLOGY_SCOPE = { kind: "node" };
11
+ /** Builds the topology.get manage-command per management.cddl: the outer verb is the registered `topology:get` capability, matching every other domain-specific (non-generic) manage-command's own "outer verb is a real capability-verb" convention. */
12
+ function buildTopologyGetCommand() {
13
+ return {
14
+ verb: TOPOLOGY_GET_CAPABILITY,
15
+ params: { verb: "topology.get" }
16
+ };
17
+ }
18
+ /**
19
+ * Reads a peer-advert's own `topology/peers` gossip extension, returning undefined for anything absent or malformed rather than throwing -- an older peer's advert simply carries no topology yet, and a malformed one is no different from an absent one to a consumer building a best-effort graph. peer-advert's own extension tail is untyped at the wire-schema level (`* tstr => any`, see peerAdvertSchema's `catchall(z.unknown())`), so PeerAdvert's inferred index signature already types this lookup as `unknown` with no cast needed; topologyPeersSchema (generated from management.cddl's own `topology-peers` type) is the actual validation.
20
+ */
21
+ function readTopologyPeers(advert) {
22
+ const raw = advert[require_gossip_extensions.TOPOLOGY_PEERS_GOSSIP_KEY];
23
+ if (raw === void 0) return;
24
+ const parsed = require_generated_protocol.topologyPeersSchema.safeParse(raw);
25
+ return parsed.success ? parsed.data : void 0;
26
+ }
27
+ /**
28
+ * Assembles a best-effort connection graph out of a directory of peer-adverts (SessionEvent.directory, or any other DirectoryEntry list a caller has accumulated), each edge attributed to whichever device's own advert reported it -- a direct edge (that device's own connection) or a relay edge (a pairing it holds, and the hub it is reached via, when known). Directed and unreconciled by design: two devices reporting the same connection from either end produce two separate edges rather than being merged into one, since deduplicating would need a judgement call about which side's report to trust that this module has no basis for making, and keeping both is strictly more informative (e.g. it surfaces an asymmetric or stale gossip view rather than silently hiding it). The actual graph query/rendering is a consuming application's own concern (agent-comms#199), not this helper's.
29
+ */
30
+ function assembleTopologyGraph(directory) {
31
+ const nodes = directory.map((entry) => entry.device);
32
+ const edges = [];
33
+ for (const entry of directory) {
34
+ const topology = readTopologyPeers(entry.advert);
35
+ if (topology === void 0) continue;
36
+ for (const to of topology.direct) edges.push({
37
+ kind: "direct",
38
+ from: entry.device,
39
+ to
40
+ });
41
+ for (const relayed of topology.relayed) edges.push({
42
+ kind: "relay",
43
+ from: entry.device,
44
+ to: relayed.device,
45
+ ...relayed.via !== void 0 ? { via: relayed.via } : {}
46
+ });
47
+ }
48
+ return {
49
+ nodes,
50
+ edges
51
+ };
52
+ }
53
+ /**
54
+ * Sends topology.get and resolves with the peer's own live TopologyPeers, parsed back out of the manage-ok response's own open `* tstr => any` tail -- the on-demand, cache-bust counterpart to reading a possibly-stale `topology/peers` gossip extension off the directory. targetDevice/timeoutMs forward directly to MeshSession.sendManageRequest's own identically-named parameters (relay routing and a requester-side give-up bound respectively), exactly as requestCapability already does for capability-request.
55
+ */
56
+ async function sendTopologyGet(session, targetDevice, timeoutMs) {
57
+ const outcome = await session.sendManageRequest(buildTopologyGetCommand(), TOPOLOGY_SCOPE, targetDevice, void 0, timeoutMs);
58
+ if (outcome.result !== "ok") throw new Error(`topology.get was refused (${outcome.code})`);
59
+ const parsed = require_generated_protocol.topologyPeersSchema.safeParse(outcome.peers);
60
+ if (!parsed.success) throw new Error("topology.get response was malformed");
61
+ return parsed.data;
62
+ }
63
+ /**
64
+ * Answers an incoming topology.get manage-request directly off the given session's own live MeshSession.getTopologyPeers() -- deliberately ungated, per management.cddl's own `topology-get` comment: no token/scope check at all, matching room.join/room.invite's identical "no gate" treatment in room-client.ts. Assumes the caller's own incomingManageRequests dispatch has already routed here for a request whose command.params.verb is "topology.get" (the same assumption createCapabilityRequestHandler already makes for capability-request) -- anything that doesn't parse as topology-get is answered `{result:"error", code:"malformed"}` rather than silently ignored, since reaching this handler at all means the caller believed it was one.
65
+ */
66
+ function createTopologyGetHandler(session) {
67
+ return async function handleTopologyGet(incoming) {
68
+ if (!require_generated_protocol.topologyGetSchema.safeParse(incoming.command.params).success) {
69
+ await incoming.respond({
70
+ result: "error",
71
+ code: "malformed"
72
+ });
73
+ return;
74
+ }
75
+ await incoming.respond({
76
+ result: "ok",
77
+ peers: session.getTopologyPeers()
78
+ });
79
+ };
80
+ }
81
+ //#endregion
82
+ exports.TOPOLOGY_GET_CAPABILITY = TOPOLOGY_GET_CAPABILITY;
83
+ exports.assembleTopologyGraph = assembleTopologyGraph;
84
+ exports.buildTopologyGetCommand = buildTopologyGetCommand;
85
+ exports.createTopologyGetHandler = createTopologyGetHandler;
86
+ exports.readTopologyPeers = readTopologyPeers;
87
+ exports.sendTopologyGet = sendTopologyGet;
@@ -0,0 +1,38 @@
1
+ import { D as DeviceId, V as ManageCommand, en as TopologyPeers, et as PeerAdvert } from "../protocol-BnbpCk0Z.cjs";
2
+ import { DirectoryEntry, IncomingManageRequest, MeshSession } from "./mesh-session.cjs";
3
+ //#region src/domain/topology.d.ts
4
+ export declare const TOPOLOGY_GET_CAPABILITY = "topology:get";
5
+ /** Builds the topology.get manage-command per management.cddl: the outer verb is the registered `topology:get` capability, matching every other domain-specific (non-generic) manage-command's own "outer verb is a real capability-verb" convention. */
6
+ export declare function buildTopologyGetCommand(): ManageCommand;
7
+ /**
8
+ * Reads a peer-advert's own `topology/peers` gossip extension, returning undefined for anything absent or malformed rather than throwing -- an older peer's advert simply carries no topology yet, and a malformed one is no different from an absent one to a consumer building a best-effort graph. peer-advert's own extension tail is untyped at the wire-schema level (`* tstr => any`, see peerAdvertSchema's `catchall(z.unknown())`), so PeerAdvert's inferred index signature already types this lookup as `unknown` with no cast needed; topologyPeersSchema (generated from management.cddl's own `topology-peers` type) is the actual validation.
9
+ */
10
+ export declare function readTopologyPeers(advert: Readonly<PeerAdvert>): TopologyPeers | undefined;
11
+ export type TopologyEdge = {
12
+ kind: "direct";
13
+ from: DeviceId;
14
+ to: DeviceId;
15
+ } | {
16
+ kind: "relay";
17
+ from: DeviceId;
18
+ to: DeviceId;
19
+ via?: DeviceId;
20
+ };
21
+ export interface TopologyGraph {
22
+ /** Every device known in the given directory, regardless of whether it self-reported any topology of its own. */
23
+ nodes: DeviceId[];
24
+ edges: TopologyEdge[];
25
+ }
26
+ /**
27
+ * Assembles a best-effort connection graph out of a directory of peer-adverts (SessionEvent.directory, or any other DirectoryEntry list a caller has accumulated), each edge attributed to whichever device's own advert reported it -- a direct edge (that device's own connection) or a relay edge (a pairing it holds, and the hub it is reached via, when known). Directed and unreconciled by design: two devices reporting the same connection from either end produce two separate edges rather than being merged into one, since deduplicating would need a judgement call about which side's report to trust that this module has no basis for making, and keeping both is strictly more informative (e.g. it surfaces an asymmetric or stale gossip view rather than silently hiding it). The actual graph query/rendering is a consuming application's own concern (agent-comms#199), not this helper's.
28
+ */
29
+ export declare function assembleTopologyGraph(directory: readonly DirectoryEntry[]): TopologyGraph;
30
+ /**
31
+ * Sends topology.get and resolves with the peer's own live TopologyPeers, parsed back out of the manage-ok response's own open `* tstr => any` tail -- the on-demand, cache-bust counterpart to reading a possibly-stale `topology/peers` gossip extension off the directory. targetDevice/timeoutMs forward directly to MeshSession.sendManageRequest's own identically-named parameters (relay routing and a requester-side give-up bound respectively), exactly as requestCapability already does for capability-request.
32
+ */
33
+ export declare function sendTopologyGet(session: Readonly<MeshSession>, targetDevice?: DeviceId, timeoutMs?: number): Promise<TopologyPeers>;
34
+ /**
35
+ * Answers an incoming topology.get manage-request directly off the given session's own live MeshSession.getTopologyPeers() -- deliberately ungated, per management.cddl's own `topology-get` comment: no token/scope check at all, matching room.join/room.invite's identical "no gate" treatment in room-client.ts. Assumes the caller's own incomingManageRequests dispatch has already routed here for a request whose command.params.verb is "topology.get" (the same assumption createCapabilityRequestHandler already makes for capability-request) -- anything that doesn't parse as topology-get is answered `{result:"error", code:"malformed"}` rather than silently ignored, since reaching this handler at all means the caller believed it was one.
36
+ */
37
+ export declare function createTopologyGetHandler(session: Readonly<MeshSession>): (incoming: Readonly<IncomingManageRequest>) => Promise<void>;
38
+ //#endregion
@@ -0,0 +1,38 @@
1
+ import { D as DeviceId, V as ManageCommand, en as TopologyPeers, et as PeerAdvert } from "../protocol-BnbpCk0Z.mjs";
2
+ import { DirectoryEntry, IncomingManageRequest, MeshSession } from "./mesh-session.mjs";
3
+ //#region src/domain/topology.d.ts
4
+ export declare const TOPOLOGY_GET_CAPABILITY = "topology:get";
5
+ /** Builds the topology.get manage-command per management.cddl: the outer verb is the registered `topology:get` capability, matching every other domain-specific (non-generic) manage-command's own "outer verb is a real capability-verb" convention. */
6
+ export declare function buildTopologyGetCommand(): ManageCommand;
7
+ /**
8
+ * Reads a peer-advert's own `topology/peers` gossip extension, returning undefined for anything absent or malformed rather than throwing -- an older peer's advert simply carries no topology yet, and a malformed one is no different from an absent one to a consumer building a best-effort graph. peer-advert's own extension tail is untyped at the wire-schema level (`* tstr => any`, see peerAdvertSchema's `catchall(z.unknown())`), so PeerAdvert's inferred index signature already types this lookup as `unknown` with no cast needed; topologyPeersSchema (generated from management.cddl's own `topology-peers` type) is the actual validation.
9
+ */
10
+ export declare function readTopologyPeers(advert: Readonly<PeerAdvert>): TopologyPeers | undefined;
11
+ export type TopologyEdge = {
12
+ kind: "direct";
13
+ from: DeviceId;
14
+ to: DeviceId;
15
+ } | {
16
+ kind: "relay";
17
+ from: DeviceId;
18
+ to: DeviceId;
19
+ via?: DeviceId;
20
+ };
21
+ export interface TopologyGraph {
22
+ /** Every device known in the given directory, regardless of whether it self-reported any topology of its own. */
23
+ nodes: DeviceId[];
24
+ edges: TopologyEdge[];
25
+ }
26
+ /**
27
+ * Assembles a best-effort connection graph out of a directory of peer-adverts (SessionEvent.directory, or any other DirectoryEntry list a caller has accumulated), each edge attributed to whichever device's own advert reported it -- a direct edge (that device's own connection) or a relay edge (a pairing it holds, and the hub it is reached via, when known). Directed and unreconciled by design: two devices reporting the same connection from either end produce two separate edges rather than being merged into one, since deduplicating would need a judgement call about which side's report to trust that this module has no basis for making, and keeping both is strictly more informative (e.g. it surfaces an asymmetric or stale gossip view rather than silently hiding it). The actual graph query/rendering is a consuming application's own concern (agent-comms#199), not this helper's.
28
+ */
29
+ export declare function assembleTopologyGraph(directory: readonly DirectoryEntry[]): TopologyGraph;
30
+ /**
31
+ * Sends topology.get and resolves with the peer's own live TopologyPeers, parsed back out of the manage-ok response's own open `* tstr => any` tail -- the on-demand, cache-bust counterpart to reading a possibly-stale `topology/peers` gossip extension off the directory. targetDevice/timeoutMs forward directly to MeshSession.sendManageRequest's own identically-named parameters (relay routing and a requester-side give-up bound respectively), exactly as requestCapability already does for capability-request.
32
+ */
33
+ export declare function sendTopologyGet(session: Readonly<MeshSession>, targetDevice?: DeviceId, timeoutMs?: number): Promise<TopologyPeers>;
34
+ /**
35
+ * Answers an incoming topology.get manage-request directly off the given session's own live MeshSession.getTopologyPeers() -- deliberately ungated, per management.cddl's own `topology-get` comment: no token/scope check at all, matching room.join/room.invite's identical "no gate" treatment in room-client.ts. Assumes the caller's own incomingManageRequests dispatch has already routed here for a request whose command.params.verb is "topology.get" (the same assumption createCapabilityRequestHandler already makes for capability-request) -- anything that doesn't parse as topology-get is answered `{result:"error", code:"malformed"}` rather than silently ignored, since reaching this handler at all means the caller believed it was one.
36
+ */
37
+ export declare function createTopologyGetHandler(session: Readonly<MeshSession>): (incoming: Readonly<IncomingManageRequest>) => Promise<void>;
38
+ //#endregion
@@ -0,0 +1,81 @@
1
+ import { topologyGetSchema, topologyPeersSchema } from "../generated/protocol.mjs";
2
+ import { t as TOPOLOGY_PEERS_GOSSIP_KEY } from "../gossip-extensions-Cdy5mQhY.mjs";
3
+ //#region src/domain/topology.ts
4
+ /**
5
+ * Topology introspection (wire-mesh#180): assembling a connection graph out of every device's own self-reported `topology/peers` gossip extension (mesh-session.ts's buildSelfAdvert computes and injects it automatically -- nothing here writes to it), and answering the on-demand `topology.get` manage-command for a live, cache-bust read instead of a possibly-stale gossiped one. `topology:get` is deliberately ungated, per management.cddl's own comment on `topology-get` and this registry entry -- no token/scope check anywhere in this module, mirroring how core/room's room.join/room.invite are ungated in room-client.ts.
6
+ */
7
+ const TOPOLOGY_GET_CAPABILITY = "topology:get";
8
+ /** `topology:get`'s own registry scope kind (spec/registry/core-capabilities.md) -- fixed and uninteresting for an ungated, whole-node query, so sendTopologyGet hardcodes it rather than asking every caller to supply the same `{kind:"node"}` literal themselves. */
9
+ const TOPOLOGY_SCOPE = { kind: "node" };
10
+ /** Builds the topology.get manage-command per management.cddl: the outer verb is the registered `topology:get` capability, matching every other domain-specific (non-generic) manage-command's own "outer verb is a real capability-verb" convention. */
11
+ function buildTopologyGetCommand() {
12
+ return {
13
+ verb: TOPOLOGY_GET_CAPABILITY,
14
+ params: { verb: "topology.get" }
15
+ };
16
+ }
17
+ /**
18
+ * Reads a peer-advert's own `topology/peers` gossip extension, returning undefined for anything absent or malformed rather than throwing -- an older peer's advert simply carries no topology yet, and a malformed one is no different from an absent one to a consumer building a best-effort graph. peer-advert's own extension tail is untyped at the wire-schema level (`* tstr => any`, see peerAdvertSchema's `catchall(z.unknown())`), so PeerAdvert's inferred index signature already types this lookup as `unknown` with no cast needed; topologyPeersSchema (generated from management.cddl's own `topology-peers` type) is the actual validation.
19
+ */
20
+ function readTopologyPeers(advert) {
21
+ const raw = advert[TOPOLOGY_PEERS_GOSSIP_KEY];
22
+ if (raw === void 0) return;
23
+ const parsed = topologyPeersSchema.safeParse(raw);
24
+ return parsed.success ? parsed.data : void 0;
25
+ }
26
+ /**
27
+ * Assembles a best-effort connection graph out of a directory of peer-adverts (SessionEvent.directory, or any other DirectoryEntry list a caller has accumulated), each edge attributed to whichever device's own advert reported it -- a direct edge (that device's own connection) or a relay edge (a pairing it holds, and the hub it is reached via, when known). Directed and unreconciled by design: two devices reporting the same connection from either end produce two separate edges rather than being merged into one, since deduplicating would need a judgement call about which side's report to trust that this module has no basis for making, and keeping both is strictly more informative (e.g. it surfaces an asymmetric or stale gossip view rather than silently hiding it). The actual graph query/rendering is a consuming application's own concern (agent-comms#199), not this helper's.
28
+ */
29
+ function assembleTopologyGraph(directory) {
30
+ const nodes = directory.map((entry) => entry.device);
31
+ const edges = [];
32
+ for (const entry of directory) {
33
+ const topology = readTopologyPeers(entry.advert);
34
+ if (topology === void 0) continue;
35
+ for (const to of topology.direct) edges.push({
36
+ kind: "direct",
37
+ from: entry.device,
38
+ to
39
+ });
40
+ for (const relayed of topology.relayed) edges.push({
41
+ kind: "relay",
42
+ from: entry.device,
43
+ to: relayed.device,
44
+ ...relayed.via !== void 0 ? { via: relayed.via } : {}
45
+ });
46
+ }
47
+ return {
48
+ nodes,
49
+ edges
50
+ };
51
+ }
52
+ /**
53
+ * Sends topology.get and resolves with the peer's own live TopologyPeers, parsed back out of the manage-ok response's own open `* tstr => any` tail -- the on-demand, cache-bust counterpart to reading a possibly-stale `topology/peers` gossip extension off the directory. targetDevice/timeoutMs forward directly to MeshSession.sendManageRequest's own identically-named parameters (relay routing and a requester-side give-up bound respectively), exactly as requestCapability already does for capability-request.
54
+ */
55
+ async function sendTopologyGet(session, targetDevice, timeoutMs) {
56
+ const outcome = await session.sendManageRequest(buildTopologyGetCommand(), TOPOLOGY_SCOPE, targetDevice, void 0, timeoutMs);
57
+ if (outcome.result !== "ok") throw new Error(`topology.get was refused (${outcome.code})`);
58
+ const parsed = topologyPeersSchema.safeParse(outcome.peers);
59
+ if (!parsed.success) throw new Error("topology.get response was malformed");
60
+ return parsed.data;
61
+ }
62
+ /**
63
+ * Answers an incoming topology.get manage-request directly off the given session's own live MeshSession.getTopologyPeers() -- deliberately ungated, per management.cddl's own `topology-get` comment: no token/scope check at all, matching room.join/room.invite's identical "no gate" treatment in room-client.ts. Assumes the caller's own incomingManageRequests dispatch has already routed here for a request whose command.params.verb is "topology.get" (the same assumption createCapabilityRequestHandler already makes for capability-request) -- anything that doesn't parse as topology-get is answered `{result:"error", code:"malformed"}` rather than silently ignored, since reaching this handler at all means the caller believed it was one.
64
+ */
65
+ function createTopologyGetHandler(session) {
66
+ return async function handleTopologyGet(incoming) {
67
+ if (!topologyGetSchema.safeParse(incoming.command.params).success) {
68
+ await incoming.respond({
69
+ result: "error",
70
+ code: "malformed"
71
+ });
72
+ return;
73
+ }
74
+ await incoming.respond({
75
+ result: "ok",
76
+ peers: session.getTopologyPeers()
77
+ });
78
+ };
79
+ }
80
+ //#endregion
81
+ export { TOPOLOGY_GET_CAPABILITY, assembleTopologyGraph, buildTopologyGetCommand, createTopologyGetHandler, readTopologyPeers, sendTopologyGet };
@@ -1,6 +1,6 @@
1
- import { Ft as SfuTrackEntry, H as ManageCommandParams, It as SfuTrackMap, V as ManageCommand, f as CapabilityScope, nn as WebrtcIceCandidate, rn as WebrtcOffer, tn as WebrtcAnswer, z as IceCandidateInit } from "../protocol-D2Ue2nd2.cjs";
1
+ import { Ft as SfuTrackEntry, H as ManageCommandParams, It as SfuTrackMap, V as ManageCommand, an as WebrtcOffer, f as CapabilityScope, in as WebrtcIceCandidate, rn as WebrtcAnswer, z as IceCandidateInit } from "../protocol-BnbpCk0Z.cjs";
2
2
  import { IncomingManageRequest } from "./mesh-session.cjs";
3
- import { u as VerifyCapabilityTokenOptions } from "../tokens-BtczHfrc.cjs";
3
+ import { u as VerifyCapabilityTokenOptions } from "../tokens-BL2BzOmN.cjs";
4
4
  //#region src/domain/webrtc-signaling.d.ts
5
5
  /** The one capability verb gating every core/webrtc message shape: an authority over this node's own signaling as a whole, not three separate resources, mirroring how core/exec's exec:pty gates all of its own inner verbs. webrtc.sfu-track-map is gated by this same verb (see spec/webrtc.cddl's own comment): an SFU able to shape a negotiation can already misreport whose media is on which mid, so a separate capability over the track-map itself would guard nothing a client doesn't already have to trust the SFU for. */
6
6
  export declare const WEBRTC_SIGNAL_VERB = "webrtc:signal";
@@ -1,6 +1,6 @@
1
- import { Ft as SfuTrackEntry, H as ManageCommandParams, It as SfuTrackMap, V as ManageCommand, f as CapabilityScope, nn as WebrtcIceCandidate, rn as WebrtcOffer, tn as WebrtcAnswer, z as IceCandidateInit } from "../protocol-D2Ue2nd2.mjs";
1
+ import { Ft as SfuTrackEntry, H as ManageCommandParams, It as SfuTrackMap, V as ManageCommand, an as WebrtcOffer, f as CapabilityScope, in as WebrtcIceCandidate, rn as WebrtcAnswer, z as IceCandidateInit } from "../protocol-BnbpCk0Z.mjs";
2
2
  import { IncomingManageRequest } from "./mesh-session.mjs";
3
- import { u as VerifyCapabilityTokenOptions } from "../tokens-Hnq9oURj.mjs";
3
+ import { u as VerifyCapabilityTokenOptions } from "../tokens-DtjdYS_a.mjs";
4
4
  //#region src/domain/webrtc-signaling.d.ts
5
5
  /** The one capability verb gating every core/webrtc message shape: an authority over this node's own signaling as a whole, not three separate resources, mirroring how core/exec's exec:pty gates all of its own inner verbs. webrtc.sfu-track-map is gated by this same verb (see spec/webrtc.cddl's own comment): an SFU able to shape a negotiation can already misreport whose media is on which mid, so a separate capability over the track-map itself would guard nothing a client doesn't already have to trust the SFU for. */
6
6
  export declare const WEBRTC_SIGNAL_VERB = "webrtc:signal";
@@ -38,6 +38,7 @@ const manageCommandParamsSchema = zod.z.lazy(() => zod.z.union([
38
38
  zod.z.lazy(() => capabilityRequestSchema),
39
39
  zod.z.lazy(() => capabilityGrantSchema),
40
40
  zod.z.lazy(() => pathTraceSchema),
41
+ zod.z.lazy(() => topologyGetSchema),
41
42
  zod.z.union([
42
43
  zod.z.lazy(() => roomSendSchema),
43
44
  zod.z.lazy(() => roomReadSchema),
@@ -269,6 +270,14 @@ const pathTraceOkSchema = zod.z.lazy(() => zod.z.object({
269
270
  "relayed": zod.z.boolean(),
270
271
  "hub-address": zod.z.string().optional()
271
272
  }).catchall(zod.z.unknown()));
273
+ const topologyPeersSchema = zod.z.lazy(() => zod.z.object({
274
+ "direct": zod.z.array(zod.z.lazy(() => deviceIdSchema)),
275
+ "relayed": zod.z.array(zod.z.object({
276
+ "device": zod.z.lazy(() => deviceIdSchema),
277
+ "via": zod.z.lazy(() => deviceIdSchema).optional()
278
+ }))
279
+ }));
280
+ const topologyGetSchema = zod.z.lazy(() => zod.z.object({ "verb": zod.z.literal("topology.get") }));
272
281
  const roomPathSchema = zod.z.lazy(() => zod.z.union([zod.z.lazy(() => ownerNamedRoomPathSchema), zod.z.lazy(() => dmRoomPathSchema)]));
273
282
  const deviceIdHexSchema = zod.z.lazy(() => zod.z.string().regex(/* @__PURE__ */ new RegExp("[0-9a-f]{64}")));
274
283
  const ownerNamedRoomPathSchema = zod.z.lazy(() => zod.z.string().regex(/* @__PURE__ */ new RegExp("[0-9a-f]{64}/[A-Za-z0-9_-]+")));
@@ -650,6 +659,8 @@ exports.thresholdShareEnvelopeSchema = thresholdShareEnvelopeSchema;
650
659
  exports.thresholdSignSchema = thresholdSignSchema;
651
660
  exports.thresholdSubjectSchema = thresholdSubjectSchema;
652
661
  exports.tokenClaimsSchema = tokenClaimsSchema;
662
+ exports.topologyGetSchema = topologyGetSchema;
663
+ exports.topologyPeersSchema = topologyPeersSchema;
653
664
  exports.transferIdSchema = transferIdSchema;
654
665
  exports.versionGetSchema = versionGetSchema;
655
666
  exports.webrtcAnswerSchema = webrtcAnswerSchema;
@@ -1,2 +1,2 @@
1
- import { $ as PathTraceOk, $n as namespacedDomainIdSchema, $r as thresholdShareEnvelopeSchema, $t as TransferId, A as DomainId, An as dataRequestFrameSchema, Ar as roomMembersOkSchema, At as RoomPath, B as IdentityKey, Bn as handleClaimsSchema, Br as sfuTrackMapSchema, Bt as StreamSession, C as CoseTokenHeaders, Cn as coseHeaderAlgSchema, Cr as revocationClaimsSchema, Ct as RoomJoinOk, D as DeviceId, Dn as coseTokenHeadersSchema, Dr as roomJoinSchema, Dt as RoomMembersOk, E as DataRequestFrame, En as coseSign1Schema, Er as roomJoinOkSchema, Et as RoomMembers, F as GossipFrame, Fn as execListSchema, Fr as roomReadSchema, Ft as SfuTrackEntry, G as ManageRequestFrame, Gn as manageCommandParamsSchema, Gr as syncPunchFrameSchema, Gt as ThresholdKeygenConfirm, H as ManageCommandParams, Hn as handshakeFrameSchema, Hr as streamDataFrameSchema, Ht as ThresholdAbort, I as HandleClaims, In as execSessionInfoSchema, Ir as roomRekeySchema, It as SfuTrackMap, J as NamespacedCapability, Jn as manageOkSchema, Jr as thresholdCommitmentSchema, Jt as ThresholdShareClaims, K as ManageResponseFrame, Kn as manageCommandSchema, Kr as thresholdAbortSchema, Kt as ThresholdKeygenRound1, L as HandleRecord, Ln as frameSchema, Lr as roomSendSchema, Lt as StreamAckFrame, M as ExecSessionInfo, Mn as deviceIdSchema, Mr as roomNoticeClaimsSchema, Mt as RoomRekey, N as Frame, Nn as dmRoomPathSchema, Nr as roomNoticeSchema, Nt as RoomSend, O as DeviceIdHex, On as dataEntriesFrameSchema, Or as roomLeaveSchema, Ot as RoomNotice, P as FrameVariant, Pn as domainIdSchema, Pr as roomPathSchema, Pt as SessionId, Q as PathTrace, Qn as namespacedCapabilitySchema, Qr as thresholdShareClaimsSchema, Qt as TokenClaims, R as HandshakeFrame, Rn as frameVariantSchema, Rr as sessionIdSchema, Rt as StreamDataFrame, S as CoseSign1, Sn as coreDomainNameSchema, Sr as revocationAnnounceFrameSchema, St as RoomJoin, T as DataHaveFrame, Tn as coseHeaderLabelSchema, Tr as roomInviteSchema, Tt as RoomMember, U as ManageError, Un as iceCandidateInitSchema, Ur as streamEndFrameSchema, Ut as ThresholdCommit, V as ManageCommand, Vn as handleRecordSchema, Vr as streamAckFrameSchema, Vt as SyncPunchFrame, W as ManageOk, Wn as identityKeySchema, Wr as streamSessionSchema, Wt as ThresholdCommitment, X as ObservedAddressFrame, Xn as manageResponseFrameSchema, Xr as thresholdKeygenRound1Schema, Xt as ThresholdSign, Y as NamespacedDomainId, Yn as manageRequestFrameSchema, Yr as thresholdKeygenConfirmSchema, Yt as ThresholdShareEnvelope, Z as OwnerNamedRoomPath, Zn as messageRefSchema, Zr as thresholdKeygenRound2Schema, Zt as ThresholdSubject, _ as CoreCapability, _n as capabilityTokenSchema, _r as ptyWriteSchema, _t as RelayOfferFrame, a as BulkOpen, ai as webrtcAnswerSchema, an as bulkAckFrameSchema, ar as peerIdentitySchema, at as PrivateUseDomainId, b as CoseHeaderKid, bn as coordinatorFrameSchema, br as relayInboundFrameSchema, bt as RevocationEntry, c as CandidatesFrame, ci as wireCandidateSchema, cn as bulkEndFrameSchema, cr as privateUseCapabilitySchema, ct as ProcSpawn, d as CapabilityRequest, dn as candidateKindSchema, dr as procSignalSchema, dt as PtyResize, ei as thresholdSignSchema, en as VersionGet, er as observedAddressFrameSchema, et as PeerAdvert, f as CapabilityScope, fn as candidatesFrameSchema, fr as procSpawnSchema, ft as PtySpawn, g as CoordinatorFrame, gn as capabilityScopeSchema, gr as ptySpawnSchema, gt as RelayInboundFrame, h as CloseFrame, hn as capabilityRequestSchema, hr as ptyResizeSchema, ht as RelayDataFrame, i as BulkEndFrame, ii as versionGetSchema, in as WireCandidate, ir as peerAdvertSchema, it as PrivateUseCapability, j as ExecList, jn as deviceIdHexSchema, jr as roomMembersSchema, jt as RoomRead, k as DmRoomPath, kn as dataHaveFrameSchema, kr as roomMemberSchema, kt as RoomNoticeClaims, l as CapabilityGrant, ln as bulkOpenSchema, lr as privateUseDomainIdSchema, lt as ProtocolVersion, m as CapabilityVerb, mn as capabilityGrantSchema, mr as ptyKillSchema, mt as RelayConnectFrame, n as BulkCancel, ni as tokenClaimsSchema, nn as WebrtcIceCandidate, nr as pathTraceOkSchema, nt as PingFrame, o as BulkResume, oi as webrtcIceCandidateSchema, on as bulkCancelSchema, or as pingFrameSchema, ot as ProcKill, p as CapabilityToken, pn as capabilityGrantOkSchema, pr as protocolVersionSchema, pt as PtyWrite, q as MessageRef, qn as manageErrorSchema, qr as thresholdCommitSchema, qt as ThresholdKeygenRound2, r as BulkDataFrame, ri as transferIdSchema, rn as WebrtcOffer, rr as pathTraceSchema, rt as PongFrame, s as CandidateKind, si as webrtcOfferSchema, sn as bulkDataFrameSchema, sr as pongFrameSchema, st as ProcSignal, t as BulkAckFrame, ti as thresholdSubjectSchema, tn as WebrtcAnswer, tr as ownerNamedRoomPathSchema, tt as PeerIdentity, u as CapabilityGrantOk, un as bulkResumeSchema, ur as procKillSchema, ut as PtyKill, v as CoreDomainName, vn as capabilityVerbSchema, vr as relayConnectFrameSchema, vt as RevocationAnnounceFrame, w as DataEntriesFrame, wn as coseHeaderKidSchema, wr as revocationEntrySchema, wt as RoomLeave, x as CoseHeaderLabel, xn as coreCapabilitySchema, xr as relayOfferFrameSchema, xt as RoomInvite, y as CoseHeaderAlg, yn as closeFrameSchema, yr as relayDataFrameSchema, yt as RevocationClaims, z as IceCandidateInit, zn as gossipFrameSchema, zr as sfuTrackEntrySchema, zt as StreamEndFrame } from "../protocol-D2Ue2nd2.cjs";
2
- export { BulkAckFrame, BulkCancel, BulkDataFrame, BulkEndFrame, BulkOpen, BulkResume, CandidateKind, CandidatesFrame, CapabilityGrant, CapabilityGrantOk, CapabilityRequest, CapabilityScope, CapabilityToken, CapabilityVerb, CloseFrame, CoordinatorFrame, CoreCapability, CoreDomainName, CoseHeaderAlg, CoseHeaderKid, CoseHeaderLabel, CoseSign1, CoseTokenHeaders, DataEntriesFrame, DataHaveFrame, DataRequestFrame, DeviceId, DeviceIdHex, DmRoomPath, DomainId, ExecList, ExecSessionInfo, Frame, FrameVariant, GossipFrame, HandleClaims, HandleRecord, HandshakeFrame, IceCandidateInit, IdentityKey, ManageCommand, ManageCommandParams, ManageError, ManageOk, ManageRequestFrame, ManageResponseFrame, MessageRef, NamespacedCapability, NamespacedDomainId, ObservedAddressFrame, OwnerNamedRoomPath, PathTrace, PathTraceOk, PeerAdvert, PeerIdentity, PingFrame, PongFrame, PrivateUseCapability, PrivateUseDomainId, ProcKill, ProcSignal, ProcSpawn, ProtocolVersion, PtyKill, PtyResize, PtySpawn, PtyWrite, RelayConnectFrame, RelayDataFrame, RelayInboundFrame, RelayOfferFrame, RevocationAnnounceFrame, RevocationClaims, RevocationEntry, RoomInvite, RoomJoin, RoomJoinOk, RoomLeave, RoomMember, RoomMembers, RoomMembersOk, RoomNotice, RoomNoticeClaims, RoomPath, RoomRead, RoomRekey, RoomSend, SessionId, SfuTrackEntry, SfuTrackMap, StreamAckFrame, StreamDataFrame, StreamEndFrame, StreamSession, SyncPunchFrame, ThresholdAbort, ThresholdCommit, ThresholdCommitment, ThresholdKeygenConfirm, ThresholdKeygenRound1, ThresholdKeygenRound2, ThresholdShareClaims, ThresholdShareEnvelope, ThresholdSign, ThresholdSubject, TokenClaims, TransferId, VersionGet, WebrtcAnswer, WebrtcIceCandidate, WebrtcOffer, WireCandidate, bulkAckFrameSchema, bulkCancelSchema, bulkDataFrameSchema, bulkEndFrameSchema, bulkOpenSchema, bulkResumeSchema, candidateKindSchema, candidatesFrameSchema, capabilityGrantOkSchema, capabilityGrantSchema, capabilityRequestSchema, capabilityScopeSchema, capabilityTokenSchema, capabilityVerbSchema, closeFrameSchema, coordinatorFrameSchema, coreCapabilitySchema, coreDomainNameSchema, coseHeaderAlgSchema, coseHeaderKidSchema, coseHeaderLabelSchema, coseSign1Schema, coseTokenHeadersSchema, dataEntriesFrameSchema, dataHaveFrameSchema, dataRequestFrameSchema, deviceIdHexSchema, deviceIdSchema, dmRoomPathSchema, domainIdSchema, execListSchema, execSessionInfoSchema, frameSchema, frameVariantSchema, gossipFrameSchema, handleClaimsSchema, handleRecordSchema, handshakeFrameSchema, iceCandidateInitSchema, identityKeySchema, manageCommandParamsSchema, manageCommandSchema, manageErrorSchema, manageOkSchema, manageRequestFrameSchema, manageResponseFrameSchema, messageRefSchema, namespacedCapabilitySchema, namespacedDomainIdSchema, observedAddressFrameSchema, ownerNamedRoomPathSchema, pathTraceOkSchema, pathTraceSchema, peerAdvertSchema, peerIdentitySchema, pingFrameSchema, pongFrameSchema, privateUseCapabilitySchema, privateUseDomainIdSchema, procKillSchema, procSignalSchema, procSpawnSchema, protocolVersionSchema, ptyKillSchema, ptyResizeSchema, ptySpawnSchema, ptyWriteSchema, relayConnectFrameSchema, relayDataFrameSchema, relayInboundFrameSchema, relayOfferFrameSchema, revocationAnnounceFrameSchema, revocationClaimsSchema, revocationEntrySchema, roomInviteSchema, roomJoinOkSchema, roomJoinSchema, roomLeaveSchema, roomMemberSchema, roomMembersOkSchema, roomMembersSchema, roomNoticeClaimsSchema, roomNoticeSchema, roomPathSchema, roomReadSchema, roomRekeySchema, roomSendSchema, sessionIdSchema, sfuTrackEntrySchema, sfuTrackMapSchema, streamAckFrameSchema, streamDataFrameSchema, streamEndFrameSchema, streamSessionSchema, syncPunchFrameSchema, thresholdAbortSchema, thresholdCommitSchema, thresholdCommitmentSchema, thresholdKeygenConfirmSchema, thresholdKeygenRound1Schema, thresholdKeygenRound2Schema, thresholdShareClaimsSchema, thresholdShareEnvelopeSchema, thresholdSignSchema, thresholdSubjectSchema, tokenClaimsSchema, transferIdSchema, versionGetSchema, webrtcAnswerSchema, webrtcIceCandidateSchema, webrtcOfferSchema, wireCandidateSchema };
1
+ import { $ as PathTraceOk, $n as messageRefSchema, $r as thresholdKeygenRound2Schema, $t as TopologyGet, A as DomainId, An as dataEntriesFrameSchema, Ar as roomLeaveSchema, At as RoomPath, B as IdentityKey, Bn as frameVariantSchema, Br as sessionIdSchema, Bt as StreamSession, C as CoseTokenHeaders, Cn as coreCapabilitySchema, Cr as relayOfferFrameSchema, Ct as RoomJoinOk, D as DeviceId, Dn as coseHeaderLabelSchema, Dr as roomInviteSchema, Dt as RoomMembersOk, E as DataRequestFrame, En as coseHeaderKidSchema, Er as revocationEntrySchema, Et as RoomMembers, F as GossipFrame, Fn as dmRoomPathSchema, Fr as roomNoticeSchema, Ft as SfuTrackEntry, G as ManageRequestFrame, Gn as iceCandidateInitSchema, Gr as streamEndFrameSchema, Gt as ThresholdKeygenConfirm, H as ManageCommandParams, Hn as handleClaimsSchema, Hr as sfuTrackMapSchema, Ht as ThresholdAbort, I as HandleClaims, In as domainIdSchema, Ir as roomPathSchema, It as SfuTrackMap, J as NamespacedCapability, Jn as manageCommandSchema, Jr as thresholdAbortSchema, Jt as ThresholdShareClaims, K as ManageResponseFrame, Kn as identityKeySchema, Kr as streamSessionSchema, Kt as ThresholdKeygenRound1, L as HandleRecord, Ln as execListSchema, Lr as roomReadSchema, Lt as StreamAckFrame, M as ExecSessionInfo, Mn as dataRequestFrameSchema, Mr as roomMembersOkSchema, Mt as RoomRekey, N as Frame, Nn as deviceIdHexSchema, Nr as roomMembersSchema, Nt as RoomSend, O as DeviceIdHex, On as coseSign1Schema, Or as roomJoinOkSchema, Ot as RoomNotice, P as FrameVariant, Pn as deviceIdSchema, Pr as roomNoticeClaimsSchema, Pt as SessionId, Q as PathTrace, Qn as manageResponseFrameSchema, Qr as thresholdKeygenRound1Schema, Qt as TokenClaims, R as HandshakeFrame, Rn as execSessionInfoSchema, Rr as roomRekeySchema, Rt as StreamDataFrame, S as CoseSign1, Sn as coordinatorFrameSchema, Sr as relayInboundFrameSchema, St as RoomJoin, T as DataHaveFrame, Tn as coseHeaderAlgSchema, Tr as revocationClaimsSchema, Tt as RoomMember, U as ManageError, Un as handleRecordSchema, Ur as streamAckFrameSchema, Ut as ThresholdCommit, V as ManageCommand, Vn as gossipFrameSchema, Vr as sfuTrackEntrySchema, Vt as SyncPunchFrame, W as ManageOk, Wn as handshakeFrameSchema, Wr as streamDataFrameSchema, Wt as ThresholdCommitment, X as ObservedAddressFrame, Xn as manageOkSchema, Xr as thresholdCommitmentSchema, Xt as ThresholdSign, Y as NamespacedDomainId, Yn as manageErrorSchema, Yr as thresholdCommitSchema, Yt as ThresholdShareEnvelope, Z as OwnerNamedRoomPath, Zn as manageRequestFrameSchema, Zr as thresholdKeygenConfirmSchema, Zt as ThresholdSubject, _ as CoreCapability, _n as capabilityRequestSchema, _r as ptyResizeSchema, _t as RelayOfferFrame, a as BulkOpen, ai as topologyGetSchema, an as WebrtcOffer, ar as pathTraceSchema, at as PrivateUseDomainId, b as CoseHeaderKid, bn as capabilityVerbSchema, br as relayConnectFrameSchema, bt as RevocationEntry, c as CandidatesFrame, ci as versionGetSchema, cn as bulkCancelSchema, cr as pingFrameSchema, ct as ProcSpawn, d as CapabilityRequest, di as webrtcOfferSchema, dn as bulkOpenSchema, dr as privateUseDomainIdSchema, dt as PtyResize, ei as thresholdShareClaimsSchema, en as TopologyPeers, er as namespacedCapabilitySchema, et as PeerAdvert, f as CapabilityScope, fi as wireCandidateSchema, fn as bulkResumeSchema, fr as procKillSchema, ft as PtySpawn, g as CoordinatorFrame, gn as capabilityGrantSchema, gr as ptyKillSchema, gt as RelayInboundFrame, h as CloseFrame, hn as capabilityGrantOkSchema, hr as protocolVersionSchema, ht as RelayDataFrame, i as BulkEndFrame, ii as tokenClaimsSchema, in as WebrtcIceCandidate, ir as pathTraceOkSchema, it as PrivateUseCapability, j as ExecList, jn as dataHaveFrameSchema, jr as roomMemberSchema, jt as RoomRead, k as DmRoomPath, kn as coseTokenHeadersSchema, kr as roomJoinSchema, kt as RoomNoticeClaims, l as CapabilityGrant, li as webrtcAnswerSchema, ln as bulkDataFrameSchema, lr as pongFrameSchema, lt as ProtocolVersion, m as CapabilityVerb, mn as candidatesFrameSchema, mr as procSpawnSchema, mt as RelayConnectFrame, n as BulkCancel, ni as thresholdSignSchema, nn as VersionGet, nr as observedAddressFrameSchema, nt as PingFrame, o as BulkResume, oi as topologyPeersSchema, on as WireCandidate, or as peerAdvertSchema, ot as ProcKill, p as CapabilityToken, pn as candidateKindSchema, pr as procSignalSchema, pt as PtyWrite, q as MessageRef, qn as manageCommandParamsSchema, qr as syncPunchFrameSchema, qt as ThresholdKeygenRound2, r as BulkDataFrame, ri as thresholdSubjectSchema, rn as WebrtcAnswer, rr as ownerNamedRoomPathSchema, rt as PongFrame, s as CandidateKind, si as transferIdSchema, sn as bulkAckFrameSchema, sr as peerIdentitySchema, st as ProcSignal, t as BulkAckFrame, ti as thresholdShareEnvelopeSchema, tn as TransferId, tr as namespacedDomainIdSchema, tt as PeerIdentity, u as CapabilityGrantOk, ui as webrtcIceCandidateSchema, un as bulkEndFrameSchema, ur as privateUseCapabilitySchema, ut as PtyKill, v as CoreDomainName, vn as capabilityScopeSchema, vr as ptySpawnSchema, vt as RevocationAnnounceFrame, w as DataEntriesFrame, wn as coreDomainNameSchema, wr as revocationAnnounceFrameSchema, wt as RoomLeave, x as CoseHeaderLabel, xn as closeFrameSchema, xr as relayDataFrameSchema, xt as RoomInvite, y as CoseHeaderAlg, yn as capabilityTokenSchema, yr as ptyWriteSchema, yt as RevocationClaims, z as IceCandidateInit, zn as frameSchema, zr as roomSendSchema, zt as StreamEndFrame } from "../protocol-BnbpCk0Z.cjs";
2
+ export { BulkAckFrame, BulkCancel, BulkDataFrame, BulkEndFrame, BulkOpen, BulkResume, CandidateKind, CandidatesFrame, CapabilityGrant, CapabilityGrantOk, CapabilityRequest, CapabilityScope, CapabilityToken, CapabilityVerb, CloseFrame, CoordinatorFrame, CoreCapability, CoreDomainName, CoseHeaderAlg, CoseHeaderKid, CoseHeaderLabel, CoseSign1, CoseTokenHeaders, DataEntriesFrame, DataHaveFrame, DataRequestFrame, DeviceId, DeviceIdHex, DmRoomPath, DomainId, ExecList, ExecSessionInfo, Frame, FrameVariant, GossipFrame, HandleClaims, HandleRecord, HandshakeFrame, IceCandidateInit, IdentityKey, ManageCommand, ManageCommandParams, ManageError, ManageOk, ManageRequestFrame, ManageResponseFrame, MessageRef, NamespacedCapability, NamespacedDomainId, ObservedAddressFrame, OwnerNamedRoomPath, PathTrace, PathTraceOk, PeerAdvert, PeerIdentity, PingFrame, PongFrame, PrivateUseCapability, PrivateUseDomainId, ProcKill, ProcSignal, ProcSpawn, ProtocolVersion, PtyKill, PtyResize, PtySpawn, PtyWrite, RelayConnectFrame, RelayDataFrame, RelayInboundFrame, RelayOfferFrame, RevocationAnnounceFrame, RevocationClaims, RevocationEntry, RoomInvite, RoomJoin, RoomJoinOk, RoomLeave, RoomMember, RoomMembers, RoomMembersOk, RoomNotice, RoomNoticeClaims, RoomPath, RoomRead, RoomRekey, RoomSend, SessionId, SfuTrackEntry, SfuTrackMap, StreamAckFrame, StreamDataFrame, StreamEndFrame, StreamSession, SyncPunchFrame, ThresholdAbort, ThresholdCommit, ThresholdCommitment, ThresholdKeygenConfirm, ThresholdKeygenRound1, ThresholdKeygenRound2, ThresholdShareClaims, ThresholdShareEnvelope, ThresholdSign, ThresholdSubject, TokenClaims, TopologyGet, TopologyPeers, TransferId, VersionGet, WebrtcAnswer, WebrtcIceCandidate, WebrtcOffer, WireCandidate, bulkAckFrameSchema, bulkCancelSchema, bulkDataFrameSchema, bulkEndFrameSchema, bulkOpenSchema, bulkResumeSchema, candidateKindSchema, candidatesFrameSchema, capabilityGrantOkSchema, capabilityGrantSchema, capabilityRequestSchema, capabilityScopeSchema, capabilityTokenSchema, capabilityVerbSchema, closeFrameSchema, coordinatorFrameSchema, coreCapabilitySchema, coreDomainNameSchema, coseHeaderAlgSchema, coseHeaderKidSchema, coseHeaderLabelSchema, coseSign1Schema, coseTokenHeadersSchema, dataEntriesFrameSchema, dataHaveFrameSchema, dataRequestFrameSchema, deviceIdHexSchema, deviceIdSchema, dmRoomPathSchema, domainIdSchema, execListSchema, execSessionInfoSchema, frameSchema, frameVariantSchema, gossipFrameSchema, handleClaimsSchema, handleRecordSchema, handshakeFrameSchema, iceCandidateInitSchema, identityKeySchema, manageCommandParamsSchema, manageCommandSchema, manageErrorSchema, manageOkSchema, manageRequestFrameSchema, manageResponseFrameSchema, messageRefSchema, namespacedCapabilitySchema, namespacedDomainIdSchema, observedAddressFrameSchema, ownerNamedRoomPathSchema, pathTraceOkSchema, pathTraceSchema, peerAdvertSchema, peerIdentitySchema, pingFrameSchema, pongFrameSchema, privateUseCapabilitySchema, privateUseDomainIdSchema, procKillSchema, procSignalSchema, procSpawnSchema, protocolVersionSchema, ptyKillSchema, ptyResizeSchema, ptySpawnSchema, ptyWriteSchema, relayConnectFrameSchema, relayDataFrameSchema, relayInboundFrameSchema, relayOfferFrameSchema, revocationAnnounceFrameSchema, revocationClaimsSchema, revocationEntrySchema, roomInviteSchema, roomJoinOkSchema, roomJoinSchema, roomLeaveSchema, roomMemberSchema, roomMembersOkSchema, roomMembersSchema, roomNoticeClaimsSchema, roomNoticeSchema, roomPathSchema, roomReadSchema, roomRekeySchema, roomSendSchema, sessionIdSchema, sfuTrackEntrySchema, sfuTrackMapSchema, streamAckFrameSchema, streamDataFrameSchema, streamEndFrameSchema, streamSessionSchema, syncPunchFrameSchema, thresholdAbortSchema, thresholdCommitSchema, thresholdCommitmentSchema, thresholdKeygenConfirmSchema, thresholdKeygenRound1Schema, thresholdKeygenRound2Schema, thresholdShareClaimsSchema, thresholdShareEnvelopeSchema, thresholdSignSchema, thresholdSubjectSchema, tokenClaimsSchema, topologyGetSchema, topologyPeersSchema, transferIdSchema, versionGetSchema, webrtcAnswerSchema, webrtcIceCandidateSchema, webrtcOfferSchema, wireCandidateSchema };
@@ -1,2 +1,2 @@
1
- import { $ as PathTraceOk, $n as namespacedDomainIdSchema, $r as thresholdShareEnvelopeSchema, $t as TransferId, A as DomainId, An as dataRequestFrameSchema, Ar as roomMembersOkSchema, At as RoomPath, B as IdentityKey, Bn as handleClaimsSchema, Br as sfuTrackMapSchema, Bt as StreamSession, C as CoseTokenHeaders, Cn as coseHeaderAlgSchema, Cr as revocationClaimsSchema, Ct as RoomJoinOk, D as DeviceId, Dn as coseTokenHeadersSchema, Dr as roomJoinSchema, Dt as RoomMembersOk, E as DataRequestFrame, En as coseSign1Schema, Er as roomJoinOkSchema, Et as RoomMembers, F as GossipFrame, Fn as execListSchema, Fr as roomReadSchema, Ft as SfuTrackEntry, G as ManageRequestFrame, Gn as manageCommandParamsSchema, Gr as syncPunchFrameSchema, Gt as ThresholdKeygenConfirm, H as ManageCommandParams, Hn as handshakeFrameSchema, Hr as streamDataFrameSchema, Ht as ThresholdAbort, I as HandleClaims, In as execSessionInfoSchema, Ir as roomRekeySchema, It as SfuTrackMap, J as NamespacedCapability, Jn as manageOkSchema, Jr as thresholdCommitmentSchema, Jt as ThresholdShareClaims, K as ManageResponseFrame, Kn as manageCommandSchema, Kr as thresholdAbortSchema, Kt as ThresholdKeygenRound1, L as HandleRecord, Ln as frameSchema, Lr as roomSendSchema, Lt as StreamAckFrame, M as ExecSessionInfo, Mn as deviceIdSchema, Mr as roomNoticeClaimsSchema, Mt as RoomRekey, N as Frame, Nn as dmRoomPathSchema, Nr as roomNoticeSchema, Nt as RoomSend, O as DeviceIdHex, On as dataEntriesFrameSchema, Or as roomLeaveSchema, Ot as RoomNotice, P as FrameVariant, Pn as domainIdSchema, Pr as roomPathSchema, Pt as SessionId, Q as PathTrace, Qn as namespacedCapabilitySchema, Qr as thresholdShareClaimsSchema, Qt as TokenClaims, R as HandshakeFrame, Rn as frameVariantSchema, Rr as sessionIdSchema, Rt as StreamDataFrame, S as CoseSign1, Sn as coreDomainNameSchema, Sr as revocationAnnounceFrameSchema, St as RoomJoin, T as DataHaveFrame, Tn as coseHeaderLabelSchema, Tr as roomInviteSchema, Tt as RoomMember, U as ManageError, Un as iceCandidateInitSchema, Ur as streamEndFrameSchema, Ut as ThresholdCommit, V as ManageCommand, Vn as handleRecordSchema, Vr as streamAckFrameSchema, Vt as SyncPunchFrame, W as ManageOk, Wn as identityKeySchema, Wr as streamSessionSchema, Wt as ThresholdCommitment, X as ObservedAddressFrame, Xn as manageResponseFrameSchema, Xr as thresholdKeygenRound1Schema, Xt as ThresholdSign, Y as NamespacedDomainId, Yn as manageRequestFrameSchema, Yr as thresholdKeygenConfirmSchema, Yt as ThresholdShareEnvelope, Z as OwnerNamedRoomPath, Zn as messageRefSchema, Zr as thresholdKeygenRound2Schema, Zt as ThresholdSubject, _ as CoreCapability, _n as capabilityTokenSchema, _r as ptyWriteSchema, _t as RelayOfferFrame, a as BulkOpen, ai as webrtcAnswerSchema, an as bulkAckFrameSchema, ar as peerIdentitySchema, at as PrivateUseDomainId, b as CoseHeaderKid, bn as coordinatorFrameSchema, br as relayInboundFrameSchema, bt as RevocationEntry, c as CandidatesFrame, ci as wireCandidateSchema, cn as bulkEndFrameSchema, cr as privateUseCapabilitySchema, ct as ProcSpawn, d as CapabilityRequest, dn as candidateKindSchema, dr as procSignalSchema, dt as PtyResize, ei as thresholdSignSchema, en as VersionGet, er as observedAddressFrameSchema, et as PeerAdvert, f as CapabilityScope, fn as candidatesFrameSchema, fr as procSpawnSchema, ft as PtySpawn, g as CoordinatorFrame, gn as capabilityScopeSchema, gr as ptySpawnSchema, gt as RelayInboundFrame, h as CloseFrame, hn as capabilityRequestSchema, hr as ptyResizeSchema, ht as RelayDataFrame, i as BulkEndFrame, ii as versionGetSchema, in as WireCandidate, ir as peerAdvertSchema, it as PrivateUseCapability, j as ExecList, jn as deviceIdHexSchema, jr as roomMembersSchema, jt as RoomRead, k as DmRoomPath, kn as dataHaveFrameSchema, kr as roomMemberSchema, kt as RoomNoticeClaims, l as CapabilityGrant, ln as bulkOpenSchema, lr as privateUseDomainIdSchema, lt as ProtocolVersion, m as CapabilityVerb, mn as capabilityGrantSchema, mr as ptyKillSchema, mt as RelayConnectFrame, n as BulkCancel, ni as tokenClaimsSchema, nn as WebrtcIceCandidate, nr as pathTraceOkSchema, nt as PingFrame, o as BulkResume, oi as webrtcIceCandidateSchema, on as bulkCancelSchema, or as pingFrameSchema, ot as ProcKill, p as CapabilityToken, pn as capabilityGrantOkSchema, pr as protocolVersionSchema, pt as PtyWrite, q as MessageRef, qn as manageErrorSchema, qr as thresholdCommitSchema, qt as ThresholdKeygenRound2, r as BulkDataFrame, ri as transferIdSchema, rn as WebrtcOffer, rr as pathTraceSchema, rt as PongFrame, s as CandidateKind, si as webrtcOfferSchema, sn as bulkDataFrameSchema, sr as pongFrameSchema, st as ProcSignal, t as BulkAckFrame, ti as thresholdSubjectSchema, tn as WebrtcAnswer, tr as ownerNamedRoomPathSchema, tt as PeerIdentity, u as CapabilityGrantOk, un as bulkResumeSchema, ur as procKillSchema, ut as PtyKill, v as CoreDomainName, vn as capabilityVerbSchema, vr as relayConnectFrameSchema, vt as RevocationAnnounceFrame, w as DataEntriesFrame, wn as coseHeaderKidSchema, wr as revocationEntrySchema, wt as RoomLeave, x as CoseHeaderLabel, xn as coreCapabilitySchema, xr as relayOfferFrameSchema, xt as RoomInvite, y as CoseHeaderAlg, yn as closeFrameSchema, yr as relayDataFrameSchema, yt as RevocationClaims, z as IceCandidateInit, zn as gossipFrameSchema, zr as sfuTrackEntrySchema, zt as StreamEndFrame } from "../protocol-D2Ue2nd2.mjs";
2
- export { BulkAckFrame, BulkCancel, BulkDataFrame, BulkEndFrame, BulkOpen, BulkResume, CandidateKind, CandidatesFrame, CapabilityGrant, CapabilityGrantOk, CapabilityRequest, CapabilityScope, CapabilityToken, CapabilityVerb, CloseFrame, CoordinatorFrame, CoreCapability, CoreDomainName, CoseHeaderAlg, CoseHeaderKid, CoseHeaderLabel, CoseSign1, CoseTokenHeaders, DataEntriesFrame, DataHaveFrame, DataRequestFrame, DeviceId, DeviceIdHex, DmRoomPath, DomainId, ExecList, ExecSessionInfo, Frame, FrameVariant, GossipFrame, HandleClaims, HandleRecord, HandshakeFrame, IceCandidateInit, IdentityKey, ManageCommand, ManageCommandParams, ManageError, ManageOk, ManageRequestFrame, ManageResponseFrame, MessageRef, NamespacedCapability, NamespacedDomainId, ObservedAddressFrame, OwnerNamedRoomPath, PathTrace, PathTraceOk, PeerAdvert, PeerIdentity, PingFrame, PongFrame, PrivateUseCapability, PrivateUseDomainId, ProcKill, ProcSignal, ProcSpawn, ProtocolVersion, PtyKill, PtyResize, PtySpawn, PtyWrite, RelayConnectFrame, RelayDataFrame, RelayInboundFrame, RelayOfferFrame, RevocationAnnounceFrame, RevocationClaims, RevocationEntry, RoomInvite, RoomJoin, RoomJoinOk, RoomLeave, RoomMember, RoomMembers, RoomMembersOk, RoomNotice, RoomNoticeClaims, RoomPath, RoomRead, RoomRekey, RoomSend, SessionId, SfuTrackEntry, SfuTrackMap, StreamAckFrame, StreamDataFrame, StreamEndFrame, StreamSession, SyncPunchFrame, ThresholdAbort, ThresholdCommit, ThresholdCommitment, ThresholdKeygenConfirm, ThresholdKeygenRound1, ThresholdKeygenRound2, ThresholdShareClaims, ThresholdShareEnvelope, ThresholdSign, ThresholdSubject, TokenClaims, TransferId, VersionGet, WebrtcAnswer, WebrtcIceCandidate, WebrtcOffer, WireCandidate, bulkAckFrameSchema, bulkCancelSchema, bulkDataFrameSchema, bulkEndFrameSchema, bulkOpenSchema, bulkResumeSchema, candidateKindSchema, candidatesFrameSchema, capabilityGrantOkSchema, capabilityGrantSchema, capabilityRequestSchema, capabilityScopeSchema, capabilityTokenSchema, capabilityVerbSchema, closeFrameSchema, coordinatorFrameSchema, coreCapabilitySchema, coreDomainNameSchema, coseHeaderAlgSchema, coseHeaderKidSchema, coseHeaderLabelSchema, coseSign1Schema, coseTokenHeadersSchema, dataEntriesFrameSchema, dataHaveFrameSchema, dataRequestFrameSchema, deviceIdHexSchema, deviceIdSchema, dmRoomPathSchema, domainIdSchema, execListSchema, execSessionInfoSchema, frameSchema, frameVariantSchema, gossipFrameSchema, handleClaimsSchema, handleRecordSchema, handshakeFrameSchema, iceCandidateInitSchema, identityKeySchema, manageCommandParamsSchema, manageCommandSchema, manageErrorSchema, manageOkSchema, manageRequestFrameSchema, manageResponseFrameSchema, messageRefSchema, namespacedCapabilitySchema, namespacedDomainIdSchema, observedAddressFrameSchema, ownerNamedRoomPathSchema, pathTraceOkSchema, pathTraceSchema, peerAdvertSchema, peerIdentitySchema, pingFrameSchema, pongFrameSchema, privateUseCapabilitySchema, privateUseDomainIdSchema, procKillSchema, procSignalSchema, procSpawnSchema, protocolVersionSchema, ptyKillSchema, ptyResizeSchema, ptySpawnSchema, ptyWriteSchema, relayConnectFrameSchema, relayDataFrameSchema, relayInboundFrameSchema, relayOfferFrameSchema, revocationAnnounceFrameSchema, revocationClaimsSchema, revocationEntrySchema, roomInviteSchema, roomJoinOkSchema, roomJoinSchema, roomLeaveSchema, roomMemberSchema, roomMembersOkSchema, roomMembersSchema, roomNoticeClaimsSchema, roomNoticeSchema, roomPathSchema, roomReadSchema, roomRekeySchema, roomSendSchema, sessionIdSchema, sfuTrackEntrySchema, sfuTrackMapSchema, streamAckFrameSchema, streamDataFrameSchema, streamEndFrameSchema, streamSessionSchema, syncPunchFrameSchema, thresholdAbortSchema, thresholdCommitSchema, thresholdCommitmentSchema, thresholdKeygenConfirmSchema, thresholdKeygenRound1Schema, thresholdKeygenRound2Schema, thresholdShareClaimsSchema, thresholdShareEnvelopeSchema, thresholdSignSchema, thresholdSubjectSchema, tokenClaimsSchema, transferIdSchema, versionGetSchema, webrtcAnswerSchema, webrtcIceCandidateSchema, webrtcOfferSchema, wireCandidateSchema };
1
+ import { $ as PathTraceOk, $n as messageRefSchema, $r as thresholdKeygenRound2Schema, $t as TopologyGet, A as DomainId, An as dataEntriesFrameSchema, Ar as roomLeaveSchema, At as RoomPath, B as IdentityKey, Bn as frameVariantSchema, Br as sessionIdSchema, Bt as StreamSession, C as CoseTokenHeaders, Cn as coreCapabilitySchema, Cr as relayOfferFrameSchema, Ct as RoomJoinOk, D as DeviceId, Dn as coseHeaderLabelSchema, Dr as roomInviteSchema, Dt as RoomMembersOk, E as DataRequestFrame, En as coseHeaderKidSchema, Er as revocationEntrySchema, Et as RoomMembers, F as GossipFrame, Fn as dmRoomPathSchema, Fr as roomNoticeSchema, Ft as SfuTrackEntry, G as ManageRequestFrame, Gn as iceCandidateInitSchema, Gr as streamEndFrameSchema, Gt as ThresholdKeygenConfirm, H as ManageCommandParams, Hn as handleClaimsSchema, Hr as sfuTrackMapSchema, Ht as ThresholdAbort, I as HandleClaims, In as domainIdSchema, Ir as roomPathSchema, It as SfuTrackMap, J as NamespacedCapability, Jn as manageCommandSchema, Jr as thresholdAbortSchema, Jt as ThresholdShareClaims, K as ManageResponseFrame, Kn as identityKeySchema, Kr as streamSessionSchema, Kt as ThresholdKeygenRound1, L as HandleRecord, Ln as execListSchema, Lr as roomReadSchema, Lt as StreamAckFrame, M as ExecSessionInfo, Mn as dataRequestFrameSchema, Mr as roomMembersOkSchema, Mt as RoomRekey, N as Frame, Nn as deviceIdHexSchema, Nr as roomMembersSchema, Nt as RoomSend, O as DeviceIdHex, On as coseSign1Schema, Or as roomJoinOkSchema, Ot as RoomNotice, P as FrameVariant, Pn as deviceIdSchema, Pr as roomNoticeClaimsSchema, Pt as SessionId, Q as PathTrace, Qn as manageResponseFrameSchema, Qr as thresholdKeygenRound1Schema, Qt as TokenClaims, R as HandshakeFrame, Rn as execSessionInfoSchema, Rr as roomRekeySchema, Rt as StreamDataFrame, S as CoseSign1, Sn as coordinatorFrameSchema, Sr as relayInboundFrameSchema, St as RoomJoin, T as DataHaveFrame, Tn as coseHeaderAlgSchema, Tr as revocationClaimsSchema, Tt as RoomMember, U as ManageError, Un as handleRecordSchema, Ur as streamAckFrameSchema, Ut as ThresholdCommit, V as ManageCommand, Vn as gossipFrameSchema, Vr as sfuTrackEntrySchema, Vt as SyncPunchFrame, W as ManageOk, Wn as handshakeFrameSchema, Wr as streamDataFrameSchema, Wt as ThresholdCommitment, X as ObservedAddressFrame, Xn as manageOkSchema, Xr as thresholdCommitmentSchema, Xt as ThresholdSign, Y as NamespacedDomainId, Yn as manageErrorSchema, Yr as thresholdCommitSchema, Yt as ThresholdShareEnvelope, Z as OwnerNamedRoomPath, Zn as manageRequestFrameSchema, Zr as thresholdKeygenConfirmSchema, Zt as ThresholdSubject, _ as CoreCapability, _n as capabilityRequestSchema, _r as ptyResizeSchema, _t as RelayOfferFrame, a as BulkOpen, ai as topologyGetSchema, an as WebrtcOffer, ar as pathTraceSchema, at as PrivateUseDomainId, b as CoseHeaderKid, bn as capabilityVerbSchema, br as relayConnectFrameSchema, bt as RevocationEntry, c as CandidatesFrame, ci as versionGetSchema, cn as bulkCancelSchema, cr as pingFrameSchema, ct as ProcSpawn, d as CapabilityRequest, di as webrtcOfferSchema, dn as bulkOpenSchema, dr as privateUseDomainIdSchema, dt as PtyResize, ei as thresholdShareClaimsSchema, en as TopologyPeers, er as namespacedCapabilitySchema, et as PeerAdvert, f as CapabilityScope, fi as wireCandidateSchema, fn as bulkResumeSchema, fr as procKillSchema, ft as PtySpawn, g as CoordinatorFrame, gn as capabilityGrantSchema, gr as ptyKillSchema, gt as RelayInboundFrame, h as CloseFrame, hn as capabilityGrantOkSchema, hr as protocolVersionSchema, ht as RelayDataFrame, i as BulkEndFrame, ii as tokenClaimsSchema, in as WebrtcIceCandidate, ir as pathTraceOkSchema, it as PrivateUseCapability, j as ExecList, jn as dataHaveFrameSchema, jr as roomMemberSchema, jt as RoomRead, k as DmRoomPath, kn as coseTokenHeadersSchema, kr as roomJoinSchema, kt as RoomNoticeClaims, l as CapabilityGrant, li as webrtcAnswerSchema, ln as bulkDataFrameSchema, lr as pongFrameSchema, lt as ProtocolVersion, m as CapabilityVerb, mn as candidatesFrameSchema, mr as procSpawnSchema, mt as RelayConnectFrame, n as BulkCancel, ni as thresholdSignSchema, nn as VersionGet, nr as observedAddressFrameSchema, nt as PingFrame, o as BulkResume, oi as topologyPeersSchema, on as WireCandidate, or as peerAdvertSchema, ot as ProcKill, p as CapabilityToken, pn as candidateKindSchema, pr as procSignalSchema, pt as PtyWrite, q as MessageRef, qn as manageCommandParamsSchema, qr as syncPunchFrameSchema, qt as ThresholdKeygenRound2, r as BulkDataFrame, ri as thresholdSubjectSchema, rn as WebrtcAnswer, rr as ownerNamedRoomPathSchema, rt as PongFrame, s as CandidateKind, si as transferIdSchema, sn as bulkAckFrameSchema, sr as peerIdentitySchema, st as ProcSignal, t as BulkAckFrame, ti as thresholdShareEnvelopeSchema, tn as TransferId, tr as namespacedDomainIdSchema, tt as PeerIdentity, u as CapabilityGrantOk, ui as webrtcIceCandidateSchema, un as bulkEndFrameSchema, ur as privateUseCapabilitySchema, ut as PtyKill, v as CoreDomainName, vn as capabilityScopeSchema, vr as ptySpawnSchema, vt as RevocationAnnounceFrame, w as DataEntriesFrame, wn as coreDomainNameSchema, wr as revocationAnnounceFrameSchema, wt as RoomLeave, x as CoseHeaderLabel, xn as closeFrameSchema, xr as relayDataFrameSchema, xt as RoomInvite, y as CoseHeaderAlg, yn as capabilityTokenSchema, yr as ptyWriteSchema, yt as RevocationClaims, z as IceCandidateInit, zn as frameSchema, zr as roomSendSchema, zt as StreamEndFrame } from "../protocol-BnbpCk0Z.mjs";
2
+ export { BulkAckFrame, BulkCancel, BulkDataFrame, BulkEndFrame, BulkOpen, BulkResume, CandidateKind, CandidatesFrame, CapabilityGrant, CapabilityGrantOk, CapabilityRequest, CapabilityScope, CapabilityToken, CapabilityVerb, CloseFrame, CoordinatorFrame, CoreCapability, CoreDomainName, CoseHeaderAlg, CoseHeaderKid, CoseHeaderLabel, CoseSign1, CoseTokenHeaders, DataEntriesFrame, DataHaveFrame, DataRequestFrame, DeviceId, DeviceIdHex, DmRoomPath, DomainId, ExecList, ExecSessionInfo, Frame, FrameVariant, GossipFrame, HandleClaims, HandleRecord, HandshakeFrame, IceCandidateInit, IdentityKey, ManageCommand, ManageCommandParams, ManageError, ManageOk, ManageRequestFrame, ManageResponseFrame, MessageRef, NamespacedCapability, NamespacedDomainId, ObservedAddressFrame, OwnerNamedRoomPath, PathTrace, PathTraceOk, PeerAdvert, PeerIdentity, PingFrame, PongFrame, PrivateUseCapability, PrivateUseDomainId, ProcKill, ProcSignal, ProcSpawn, ProtocolVersion, PtyKill, PtyResize, PtySpawn, PtyWrite, RelayConnectFrame, RelayDataFrame, RelayInboundFrame, RelayOfferFrame, RevocationAnnounceFrame, RevocationClaims, RevocationEntry, RoomInvite, RoomJoin, RoomJoinOk, RoomLeave, RoomMember, RoomMembers, RoomMembersOk, RoomNotice, RoomNoticeClaims, RoomPath, RoomRead, RoomRekey, RoomSend, SessionId, SfuTrackEntry, SfuTrackMap, StreamAckFrame, StreamDataFrame, StreamEndFrame, StreamSession, SyncPunchFrame, ThresholdAbort, ThresholdCommit, ThresholdCommitment, ThresholdKeygenConfirm, ThresholdKeygenRound1, ThresholdKeygenRound2, ThresholdShareClaims, ThresholdShareEnvelope, ThresholdSign, ThresholdSubject, TokenClaims, TopologyGet, TopologyPeers, TransferId, VersionGet, WebrtcAnswer, WebrtcIceCandidate, WebrtcOffer, WireCandidate, bulkAckFrameSchema, bulkCancelSchema, bulkDataFrameSchema, bulkEndFrameSchema, bulkOpenSchema, bulkResumeSchema, candidateKindSchema, candidatesFrameSchema, capabilityGrantOkSchema, capabilityGrantSchema, capabilityRequestSchema, capabilityScopeSchema, capabilityTokenSchema, capabilityVerbSchema, closeFrameSchema, coordinatorFrameSchema, coreCapabilitySchema, coreDomainNameSchema, coseHeaderAlgSchema, coseHeaderKidSchema, coseHeaderLabelSchema, coseSign1Schema, coseTokenHeadersSchema, dataEntriesFrameSchema, dataHaveFrameSchema, dataRequestFrameSchema, deviceIdHexSchema, deviceIdSchema, dmRoomPathSchema, domainIdSchema, execListSchema, execSessionInfoSchema, frameSchema, frameVariantSchema, gossipFrameSchema, handleClaimsSchema, handleRecordSchema, handshakeFrameSchema, iceCandidateInitSchema, identityKeySchema, manageCommandParamsSchema, manageCommandSchema, manageErrorSchema, manageOkSchema, manageRequestFrameSchema, manageResponseFrameSchema, messageRefSchema, namespacedCapabilitySchema, namespacedDomainIdSchema, observedAddressFrameSchema, ownerNamedRoomPathSchema, pathTraceOkSchema, pathTraceSchema, peerAdvertSchema, peerIdentitySchema, pingFrameSchema, pongFrameSchema, privateUseCapabilitySchema, privateUseDomainIdSchema, procKillSchema, procSignalSchema, procSpawnSchema, protocolVersionSchema, ptyKillSchema, ptyResizeSchema, ptySpawnSchema, ptyWriteSchema, relayConnectFrameSchema, relayDataFrameSchema, relayInboundFrameSchema, relayOfferFrameSchema, revocationAnnounceFrameSchema, revocationClaimsSchema, revocationEntrySchema, roomInviteSchema, roomJoinOkSchema, roomJoinSchema, roomLeaveSchema, roomMemberSchema, roomMembersOkSchema, roomMembersSchema, roomNoticeClaimsSchema, roomNoticeSchema, roomPathSchema, roomReadSchema, roomRekeySchema, roomSendSchema, sessionIdSchema, sfuTrackEntrySchema, sfuTrackMapSchema, streamAckFrameSchema, streamDataFrameSchema, streamEndFrameSchema, streamSessionSchema, syncPunchFrameSchema, thresholdAbortSchema, thresholdCommitSchema, thresholdCommitmentSchema, thresholdKeygenConfirmSchema, thresholdKeygenRound1Schema, thresholdKeygenRound2Schema, thresholdShareClaimsSchema, thresholdShareEnvelopeSchema, thresholdSignSchema, thresholdSubjectSchema, tokenClaimsSchema, topologyGetSchema, topologyPeersSchema, transferIdSchema, versionGetSchema, webrtcAnswerSchema, webrtcIceCandidateSchema, webrtcOfferSchema, wireCandidateSchema };
@@ -37,6 +37,7 @@ const manageCommandParamsSchema = z.lazy(() => z.union([
37
37
  z.lazy(() => capabilityRequestSchema),
38
38
  z.lazy(() => capabilityGrantSchema),
39
39
  z.lazy(() => pathTraceSchema),
40
+ z.lazy(() => topologyGetSchema),
40
41
  z.union([
41
42
  z.lazy(() => roomSendSchema),
42
43
  z.lazy(() => roomReadSchema),
@@ -268,6 +269,14 @@ const pathTraceOkSchema = z.lazy(() => z.object({
268
269
  "relayed": z.boolean(),
269
270
  "hub-address": z.string().optional()
270
271
  }).catchall(z.unknown()));
272
+ const topologyPeersSchema = z.lazy(() => z.object({
273
+ "direct": z.array(z.lazy(() => deviceIdSchema)),
274
+ "relayed": z.array(z.object({
275
+ "device": z.lazy(() => deviceIdSchema),
276
+ "via": z.lazy(() => deviceIdSchema).optional()
277
+ }))
278
+ }));
279
+ const topologyGetSchema = z.lazy(() => z.object({ "verb": z.literal("topology.get") }));
271
280
  const roomPathSchema = z.lazy(() => z.union([z.lazy(() => ownerNamedRoomPathSchema), z.lazy(() => dmRoomPathSchema)]));
272
281
  const deviceIdHexSchema = z.lazy(() => z.string().regex(/* @__PURE__ */ new RegExp("[0-9a-f]{64}")));
273
282
  const ownerNamedRoomPathSchema = z.lazy(() => z.string().regex(/* @__PURE__ */ new RegExp("[0-9a-f]{64}/[A-Za-z0-9_-]+")));
@@ -543,4 +552,4 @@ const iceCandidateInitSchema = z.lazy(() => z.object({
543
552
  "username-fragment": z.string().optional()
544
553
  }));
545
554
  //#endregion
546
- export { bulkAckFrameSchema, bulkCancelSchema, bulkDataFrameSchema, bulkEndFrameSchema, bulkOpenSchema, bulkResumeSchema, candidateKindSchema, candidatesFrameSchema, capabilityGrantOkSchema, capabilityGrantSchema, capabilityRequestSchema, capabilityScopeSchema, capabilityTokenSchema, capabilityVerbSchema, closeFrameSchema, coordinatorFrameSchema, coreCapabilitySchema, coreDomainNameSchema, coseHeaderAlgSchema, coseHeaderKidSchema, coseHeaderLabelSchema, coseSign1Schema, coseTokenHeadersSchema, dataEntriesFrameSchema, dataHaveFrameSchema, dataRequestFrameSchema, deviceIdHexSchema, deviceIdSchema, dmRoomPathSchema, domainIdSchema, execListSchema, execSessionInfoSchema, frameSchema, frameVariantSchema, gossipFrameSchema, handleClaimsSchema, handleRecordSchema, handshakeFrameSchema, iceCandidateInitSchema, identityKeySchema, manageCommandParamsSchema, manageCommandSchema, manageErrorSchema, manageOkSchema, manageRequestFrameSchema, manageResponseFrameSchema, messageRefSchema, namespacedCapabilitySchema, namespacedDomainIdSchema, observedAddressFrameSchema, ownerNamedRoomPathSchema, pathTraceOkSchema, pathTraceSchema, peerAdvertSchema, peerIdentitySchema, pingFrameSchema, pongFrameSchema, privateUseCapabilitySchema, privateUseDomainIdSchema, procKillSchema, procSignalSchema, procSpawnSchema, protocolVersionSchema, ptyKillSchema, ptyResizeSchema, ptySpawnSchema, ptyWriteSchema, relayConnectFrameSchema, relayDataFrameSchema, relayInboundFrameSchema, relayOfferFrameSchema, revocationAnnounceFrameSchema, revocationClaimsSchema, revocationEntrySchema, roomInviteSchema, roomJoinOkSchema, roomJoinSchema, roomLeaveSchema, roomMemberSchema, roomMembersOkSchema, roomMembersSchema, roomNoticeClaimsSchema, roomNoticeSchema, roomPathSchema, roomReadSchema, roomRekeySchema, roomSendSchema, sessionIdSchema, sfuTrackEntrySchema, sfuTrackMapSchema, streamAckFrameSchema, streamDataFrameSchema, streamEndFrameSchema, streamSessionSchema, syncPunchFrameSchema, thresholdAbortSchema, thresholdCommitSchema, thresholdCommitmentSchema, thresholdKeygenConfirmSchema, thresholdKeygenRound1Schema, thresholdKeygenRound2Schema, thresholdShareClaimsSchema, thresholdShareEnvelopeSchema, thresholdSignSchema, thresholdSubjectSchema, tokenClaimsSchema, transferIdSchema, versionGetSchema, webrtcAnswerSchema, webrtcIceCandidateSchema, webrtcOfferSchema, wireCandidateSchema };
555
+ export { bulkAckFrameSchema, bulkCancelSchema, bulkDataFrameSchema, bulkEndFrameSchema, bulkOpenSchema, bulkResumeSchema, candidateKindSchema, candidatesFrameSchema, capabilityGrantOkSchema, capabilityGrantSchema, capabilityRequestSchema, capabilityScopeSchema, capabilityTokenSchema, capabilityVerbSchema, closeFrameSchema, coordinatorFrameSchema, coreCapabilitySchema, coreDomainNameSchema, coseHeaderAlgSchema, coseHeaderKidSchema, coseHeaderLabelSchema, coseSign1Schema, coseTokenHeadersSchema, dataEntriesFrameSchema, dataHaveFrameSchema, dataRequestFrameSchema, deviceIdHexSchema, deviceIdSchema, dmRoomPathSchema, domainIdSchema, execListSchema, execSessionInfoSchema, frameSchema, frameVariantSchema, gossipFrameSchema, handleClaimsSchema, handleRecordSchema, handshakeFrameSchema, iceCandidateInitSchema, identityKeySchema, manageCommandParamsSchema, manageCommandSchema, manageErrorSchema, manageOkSchema, manageRequestFrameSchema, manageResponseFrameSchema, messageRefSchema, namespacedCapabilitySchema, namespacedDomainIdSchema, observedAddressFrameSchema, ownerNamedRoomPathSchema, pathTraceOkSchema, pathTraceSchema, peerAdvertSchema, peerIdentitySchema, pingFrameSchema, pongFrameSchema, privateUseCapabilitySchema, privateUseDomainIdSchema, procKillSchema, procSignalSchema, procSpawnSchema, protocolVersionSchema, ptyKillSchema, ptyResizeSchema, ptySpawnSchema, ptyWriteSchema, relayConnectFrameSchema, relayDataFrameSchema, relayInboundFrameSchema, relayOfferFrameSchema, revocationAnnounceFrameSchema, revocationClaimsSchema, revocationEntrySchema, roomInviteSchema, roomJoinOkSchema, roomJoinSchema, roomLeaveSchema, roomMemberSchema, roomMembersOkSchema, roomMembersSchema, roomNoticeClaimsSchema, roomNoticeSchema, roomPathSchema, roomReadSchema, roomRekeySchema, roomSendSchema, sessionIdSchema, sfuTrackEntrySchema, sfuTrackMapSchema, streamAckFrameSchema, streamDataFrameSchema, streamEndFrameSchema, streamSessionSchema, syncPunchFrameSchema, thresholdAbortSchema, thresholdCommitSchema, thresholdCommitmentSchema, thresholdKeygenConfirmSchema, thresholdKeygenRound1Schema, thresholdKeygenRound2Schema, thresholdShareClaimsSchema, thresholdShareEnvelopeSchema, thresholdSignSchema, thresholdSubjectSchema, tokenClaimsSchema, topologyGetSchema, topologyPeersSchema, transferIdSchema, versionGetSchema, webrtcAnswerSchema, webrtcIceCandidateSchema, webrtcOfferSchema, wireCandidateSchema };
@@ -0,0 +1,41 @@
1
+ import packageJson from "../package.json" with { type: "json" };
2
+ //#region src/domain/own-version.ts
3
+ /** This node's own actual, currently-running wire-mesh-core version -- read once from the installed package's own package.json, never from anything gossiped or cached, so buildSelfAdvert's own self-advert extension and version.get's manage-response both always answer with the truth for this exact running process. */
4
+ const OWN_VERSION = packageJson.version;
5
+ /** The gossip extension key wire-mesh-core itself injects into every self-advert (mesh-session.ts's own buildSelfAdvert) to report OWN_VERSION -- reserved so a sendGossipUpdate caller can never also supply it, separately from peer-advert's own typed struct fields (RESERVED_PEER_ADVERT_KEYS in mesh-session.ts), since this is just an extension-tail key (transport.cddl), not a struct field. */
6
+ const CORE_VERSION_GOSSIP_KEY = "wire-mesh/version";
7
+ const VERSION_GET_VERB = "version.get";
8
+ /** True when params is the core/version domain's own version-get command (version.cddl) -- a receiver answers this unconditionally, bypassing incomingManageRequests entirely, since it is deliberately ungated: exactly as sensitive as what CORE_VERSION_GOSSIP_KEY already broadcasts unconditionally via gossip. */
9
+ function isVersionGetCommand(params) {
10
+ return "verb" in params && params.verb === VERSION_GET_VERB;
11
+ }
12
+ /** The manage-ok outcome mesh-session.ts answers a version.get request with -- OWN_VERSION on manage-ok's own open `* tstr => any` tail, the same pattern exec-list's own exec-session-info result already uses. */
13
+ function versionGetOutcome() {
14
+ return {
15
+ result: "ok",
16
+ version: OWN_VERSION
17
+ };
18
+ }
19
+ //#endregion
20
+ //#region src/domain/gossip-extensions.ts
21
+ /** peer-advert's own three typed fields -- reserved so a `sendGossipUpdate` caller can never override the session's own device-id, address list, or freshness timestamp by supplying an extension of the same name. */
22
+ const RESERVED_PEER_ADVERT_KEYS = /* @__PURE__ */ new Set([
23
+ "device",
24
+ "addresses",
25
+ "snapshot-seconds"
26
+ ]);
27
+ /** The gossip extension key topology self-advertisement (wire-mesh#180) is carried under -- session-managed, computed fresh from this session's own connection/relayPairings state on every self-advert, never a caller-supplied fact. */
28
+ const TOPOLOGY_PEERS_GOSSIP_KEY = "topology/peers";
29
+ /** A gossip extension key must be domain-qualified as `<domain>/<field>` (lowercase kebab-case each side), per `spec/CONVENTIONS.md`'s gossip-extension-namespacing convention -- this is what stops two independent applications sharing one gossip tail from silently colliding on a bare name like "status". */
30
+ const GOSSIP_EXTENSION_KEY_PATTERN = /^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;
31
+ /** Rejects a `sendGossipUpdate` extension bag that would shadow one of peer-advert's own mandatory fields, shadow topology/peers (a field the session itself already computes and injects automatically, wire-mesh#180), use the key wire-mesh-core itself reserves for its own self-reported version (wire-mesh#179), or use a bare, non-domain-qualified key -- all are caller bugs that must fail loudly at the call site, not silently corrupt or ambiguously merge into the wire frame. */
32
+ function validateGossipExtensions(extensions) {
33
+ for (const key of Object.keys(extensions)) {
34
+ if (RESERVED_PEER_ADVERT_KEYS.has(key)) throw new Error(`sendGossipUpdate extension key "${key}" collides with a mandatory peer-advert field`);
35
+ if (key === "topology/peers") throw new Error(`sendGossipUpdate extension key "${key}" collides with a session-managed gossip field`);
36
+ if (key === "wire-mesh/version") throw new Error(`sendGossipUpdate extension key "${key}" is reserved for wire-mesh-core's own self-reported version`);
37
+ if (!GOSSIP_EXTENSION_KEY_PATTERN.test(key)) throw new Error(`sendGossipUpdate extension key "${key}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`);
38
+ }
39
+ }
40
+ //#endregion
41
+ export { isVersionGetCommand as a, OWN_VERSION as i, validateGossipExtensions as n, versionGetOutcome as o, CORE_VERSION_GOSSIP_KEY as r, TOPOLOGY_PEERS_GOSSIP_KEY as t };
@@ -0,0 +1,78 @@
1
+ const require_rolldown_runtime = require("./rolldown-runtime-VH7oDXx4.cjs");
2
+ let package_json = require("../package.json");
3
+ package_json = require_rolldown_runtime.__toESM(package_json, 1);
4
+ //#region src/domain/own-version.ts
5
+ /** This node's own actual, currently-running wire-mesh-core version -- read once from the installed package's own package.json, never from anything gossiped or cached, so buildSelfAdvert's own self-advert extension and version.get's manage-response both always answer with the truth for this exact running process. */
6
+ const OWN_VERSION = package_json.default.version;
7
+ /** The gossip extension key wire-mesh-core itself injects into every self-advert (mesh-session.ts's own buildSelfAdvert) to report OWN_VERSION -- reserved so a sendGossipUpdate caller can never also supply it, separately from peer-advert's own typed struct fields (RESERVED_PEER_ADVERT_KEYS in mesh-session.ts), since this is just an extension-tail key (transport.cddl), not a struct field. */
8
+ const CORE_VERSION_GOSSIP_KEY = "wire-mesh/version";
9
+ const VERSION_GET_VERB = "version.get";
10
+ /** True when params is the core/version domain's own version-get command (version.cddl) -- a receiver answers this unconditionally, bypassing incomingManageRequests entirely, since it is deliberately ungated: exactly as sensitive as what CORE_VERSION_GOSSIP_KEY already broadcasts unconditionally via gossip. */
11
+ function isVersionGetCommand(params) {
12
+ return "verb" in params && params.verb === VERSION_GET_VERB;
13
+ }
14
+ /** The manage-ok outcome mesh-session.ts answers a version.get request with -- OWN_VERSION on manage-ok's own open `* tstr => any` tail, the same pattern exec-list's own exec-session-info result already uses. */
15
+ function versionGetOutcome() {
16
+ return {
17
+ result: "ok",
18
+ version: OWN_VERSION
19
+ };
20
+ }
21
+ //#endregion
22
+ //#region src/domain/gossip-extensions.ts
23
+ /** peer-advert's own three typed fields -- reserved so a `sendGossipUpdate` caller can never override the session's own device-id, address list, or freshness timestamp by supplying an extension of the same name. */
24
+ const RESERVED_PEER_ADVERT_KEYS = /* @__PURE__ */ new Set([
25
+ "device",
26
+ "addresses",
27
+ "snapshot-seconds"
28
+ ]);
29
+ /** The gossip extension key topology self-advertisement (wire-mesh#180) is carried under -- session-managed, computed fresh from this session's own connection/relayPairings state on every self-advert, never a caller-supplied fact. */
30
+ const TOPOLOGY_PEERS_GOSSIP_KEY = "topology/peers";
31
+ /** A gossip extension key must be domain-qualified as `<domain>/<field>` (lowercase kebab-case each side), per `spec/CONVENTIONS.md`'s gossip-extension-namespacing convention -- this is what stops two independent applications sharing one gossip tail from silently colliding on a bare name like "status". */
32
+ const GOSSIP_EXTENSION_KEY_PATTERN = /^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;
33
+ /** Rejects a `sendGossipUpdate` extension bag that would shadow one of peer-advert's own mandatory fields, shadow topology/peers (a field the session itself already computes and injects automatically, wire-mesh#180), use the key wire-mesh-core itself reserves for its own self-reported version (wire-mesh#179), or use a bare, non-domain-qualified key -- all are caller bugs that must fail loudly at the call site, not silently corrupt or ambiguously merge into the wire frame. */
34
+ function validateGossipExtensions(extensions) {
35
+ for (const key of Object.keys(extensions)) {
36
+ if (RESERVED_PEER_ADVERT_KEYS.has(key)) throw new Error(`sendGossipUpdate extension key "${key}" collides with a mandatory peer-advert field`);
37
+ if (key === "topology/peers") throw new Error(`sendGossipUpdate extension key "${key}" collides with a session-managed gossip field`);
38
+ if (key === "wire-mesh/version") throw new Error(`sendGossipUpdate extension key "${key}" is reserved for wire-mesh-core's own self-reported version`);
39
+ if (!GOSSIP_EXTENSION_KEY_PATTERN.test(key)) throw new Error(`sendGossipUpdate extension key "${key}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`);
40
+ }
41
+ }
42
+ //#endregion
43
+ Object.defineProperty(exports, "CORE_VERSION_GOSSIP_KEY", {
44
+ enumerable: true,
45
+ get: function() {
46
+ return CORE_VERSION_GOSSIP_KEY;
47
+ }
48
+ });
49
+ Object.defineProperty(exports, "OWN_VERSION", {
50
+ enumerable: true,
51
+ get: function() {
52
+ return OWN_VERSION;
53
+ }
54
+ });
55
+ Object.defineProperty(exports, "TOPOLOGY_PEERS_GOSSIP_KEY", {
56
+ enumerable: true,
57
+ get: function() {
58
+ return TOPOLOGY_PEERS_GOSSIP_KEY;
59
+ }
60
+ });
61
+ Object.defineProperty(exports, "isVersionGetCommand", {
62
+ enumerable: true,
63
+ get: function() {
64
+ return isVersionGetCommand;
65
+ }
66
+ });
67
+ Object.defineProperty(exports, "validateGossipExtensions", {
68
+ enumerable: true,
69
+ get: function() {
70
+ return validateGossipExtensions;
71
+ }
72
+ });
73
+ Object.defineProperty(exports, "versionGetOutcome", {
74
+ enumerable: true,
75
+ get: function() {
76
+ return versionGetOutcome;
77
+ }
78
+ });
@@ -1,4 +1,4 @@
1
- import { B as IdentityKey, D as DeviceId } from "./protocol-D2Ue2nd2.mjs";
1
+ import { B as IdentityKey, D as DeviceId } from "./protocol-BnbpCk0Z.cjs";
2
2
  //#region src/ports/identity.d.ts
3
3
  /**
4
4
  * Wraps the local node's own identity plus the signing/verification primitives capability-token handling needs -- never hardcoded to one crypto library's own API shape (Node's webcrypto, a WASM implementation, a hardware key, etc. can all satisfy this same contract).
@@ -1,4 +1,4 @@
1
- import { B as IdentityKey, D as DeviceId } from "./protocol-D2Ue2nd2.cjs";
1
+ import { B as IdentityKey, D as DeviceId } from "./protocol-BnbpCk0Z.mjs";
2
2
  //#region src/ports/identity.d.ts
3
3
  /**
4
4
  * Wraps the local node's own identity plus the signing/verification primitives capability-token handling needs -- never hardcoded to one crypto library's own API shape (Node's webcrypto, a WASM implementation, a hardware key, etc. can all satisfy this same contract).
@@ -1,2 +1,2 @@
1
- import { t as IdentityPort } from "../identity-pOt5KxJB.cjs";
1
+ import { t as IdentityPort } from "../identity-BRlM-Krs.cjs";
2
2
  export { IdentityPort };
@@ -1,2 +1,2 @@
1
- import { t as IdentityPort } from "../identity-Br6e0Rx5.mjs";
1
+ import { t as IdentityPort } from "../identity-DiuayfEd.mjs";
2
2
  export { IdentityPort };
@@ -1,2 +1,2 @@
1
- import { n as Listener, r as Transport, t as Connection } from "../transport-fUY3alfO.cjs";
1
+ import { n as Listener, r as Transport, t as Connection } from "../transport-Ca_ZyyZe.cjs";
2
2
  export { Connection, Listener, Transport };