agent-comms 8.4.1 → 8.6.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 (294) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +33 -3
  4. package/dist/bridges/cc-peer/front-runtime.d.ts.map +1 -1
  5. package/dist/bridges/cc-peer/front-runtime.js +4 -2
  6. package/dist/bridges/cc-peer/front-runtime.js.map +1 -1
  7. package/dist/bridges/user/controller.d.ts.map +1 -1
  8. package/dist/bridges/user/controller.js +4 -1
  9. package/dist/bridges/user/controller.js.map +1 -1
  10. package/dist/bridges/user/web/contract.d.ts +12 -0
  11. package/dist/bridges/user/web/contract.d.ts.map +1 -1
  12. package/dist/bridges/user/web/contract.js +9 -0
  13. package/dist/bridges/user/web/contract.js.map +1 -1
  14. package/dist/bridges/user/web/dist/bundle.js +1 -1
  15. package/dist/bridges/user/web/dist/mesh-worker.js +1 -1
  16. package/dist/bridges/user/web/dist/sw.js +1 -1
  17. package/dist/bridges/user/web/frontend/components/MeshGraphView.d.ts +3 -1
  18. package/dist/bridges/user/web/frontend/components/MeshGraphView.d.ts.map +1 -1
  19. package/dist/bridges/user/web/frontend/components/MeshGraphView.js +2 -4
  20. package/dist/bridges/user/web/frontend/components/MeshGraphView.js.map +1 -1
  21. package/dist/bridges/user/web/frontend/components/MeshPanel.d.ts +1 -1
  22. package/dist/bridges/user/web/frontend/components/MeshPanel.d.ts.map +1 -1
  23. package/dist/bridges/user/web/frontend/components/MeshPanel.js +6 -1
  24. package/dist/bridges/user/web/frontend/components/MeshPanel.js.map +1 -1
  25. package/dist/bridges/user/web/frontend/components/MeshTraceView.d.ts +3 -1
  26. package/dist/bridges/user/web/frontend/components/MeshTraceView.d.ts.map +1 -1
  27. package/dist/bridges/user/web/frontend/components/MeshTraceView.js +2 -4
  28. package/dist/bridges/user/web/frontend/components/MeshTraceView.js.map +1 -1
  29. package/dist/bridges/user/web/frontend/main.js +6 -13
  30. package/dist/bridges/user/web/frontend/main.js.map +1 -1
  31. package/dist/bridges/user/web/frontend/mesh-client.d.ts +2 -0
  32. package/dist/bridges/user/web/frontend/mesh-client.d.ts.map +1 -1
  33. package/dist/bridges/user/web/frontend/mesh-client.js +1 -0
  34. package/dist/bridges/user/web/frontend/mesh-client.js.map +1 -1
  35. package/dist/bridges/user/web/frontend/mesh-invalidation.d.ts +11 -0
  36. package/dist/bridges/user/web/frontend/mesh-invalidation.d.ts.map +1 -0
  37. package/dist/bridges/user/web/frontend/mesh-invalidation.js +26 -0
  38. package/dist/bridges/user/web/frontend/mesh-invalidation.js.map +1 -0
  39. package/dist/bridges/user/web/frontend/mesh-worker.d.ts.map +1 -1
  40. package/dist/bridges/user/web/frontend/mesh-worker.js +1 -0
  41. package/dist/bridges/user/web/frontend/mesh-worker.js.map +1 -1
  42. package/dist/bridges/user/web/frontend/tab-contract.d.ts +5 -0
  43. package/dist/bridges/user/web/frontend/tab-contract.d.ts.map +1 -1
  44. package/dist/bridges/user/web/reads.d.ts +3 -0
  45. package/dist/bridges/user/web/reads.d.ts.map +1 -1
  46. package/dist/bridges/user/web/reads.js +4 -0
  47. package/dist/bridges/user/web/reads.js.map +1 -1
  48. package/dist/bridges/user/web/router.d.ts +5 -0
  49. package/dist/bridges/user/web/router.d.ts.map +1 -1
  50. package/dist/bridges/user/web/router.js +2 -1
  51. package/dist/bridges/user/web/router.js.map +1 -1
  52. package/dist/core/agent-registry.d.ts.map +1 -1
  53. package/dist/core/agent-registry.js +20 -6
  54. package/dist/core/agent-registry.js.map +1 -1
  55. package/dist/core/agent-table.d.ts +18 -0
  56. package/dist/core/agent-table.d.ts.map +1 -0
  57. package/dist/core/agent-table.js +38 -0
  58. package/dist/core/agent-table.js.map +1 -0
  59. package/dist/core/atomic-file.d.ts +12 -0
  60. package/dist/core/atomic-file.d.ts.map +1 -0
  61. package/dist/core/atomic-file.js +37 -0
  62. package/dist/core/atomic-file.js.map +1 -0
  63. package/dist/core/bridge-mesh.d.ts.map +1 -1
  64. package/dist/core/bridge-mesh.js +7 -0
  65. package/dist/core/bridge-mesh.js.map +1 -1
  66. package/dist/core/bridge.d.ts +5 -0
  67. package/dist/core/bridge.d.ts.map +1 -1
  68. package/dist/core/bridge.js +26 -1
  69. package/dist/core/bridge.js.map +1 -1
  70. package/dist/core/delivery-engine.d.ts.map +1 -1
  71. package/dist/core/delivery-engine.js +4 -0
  72. package/dist/core/delivery-engine.js.map +1 -1
  73. package/dist/core/device-membership-verification.d.ts +23 -9
  74. package/dist/core/device-membership-verification.d.ts.map +1 -1
  75. package/dist/core/device-membership-verification.js +38 -11
  76. package/dist/core/device-membership-verification.js.map +1 -1
  77. package/dist/core/device-membership.d.ts +12 -3
  78. package/dist/core/device-membership.d.ts.map +1 -1
  79. package/dist/core/device-membership.js +10 -7
  80. package/dist/core/device-membership.js.map +1 -1
  81. package/dist/core/directory-admission.d.ts +5 -3
  82. package/dist/core/directory-admission.d.ts.map +1 -1
  83. package/dist/core/directory-admission.js +55 -32
  84. package/dist/core/directory-admission.js.map +1 -1
  85. package/dist/core/display-name.d.ts +29 -0
  86. package/dist/core/display-name.d.ts.map +1 -0
  87. package/dist/core/display-name.js +57 -0
  88. package/dist/core/display-name.js.map +1 -0
  89. package/dist/core/gateway-trust-actions.d.ts +7 -9
  90. package/dist/core/gateway-trust-actions.d.ts.map +1 -1
  91. package/dist/core/gateway-trust-actions.js +82 -16
  92. package/dist/core/gateway-trust-actions.js.map +1 -1
  93. package/dist/core/gateway-trust.d.ts +38 -17
  94. package/dist/core/gateway-trust.d.ts.map +1 -1
  95. package/dist/core/gateway-trust.js +86 -37
  96. package/dist/core/gateway-trust.js.map +1 -1
  97. package/dist/core/gossip-directory.d.ts +25 -3
  98. package/dist/core/gossip-directory.d.ts.map +1 -1
  99. package/dist/core/gossip-directory.js +53 -5
  100. package/dist/core/gossip-directory.js.map +1 -1
  101. package/dist/core/gossip-extensions.d.ts +4 -0
  102. package/dist/core/gossip-extensions.d.ts.map +1 -1
  103. package/dist/core/gossip-extensions.js +4 -0
  104. package/dist/core/gossip-extensions.js.map +1 -1
  105. package/dist/core/group-proofs.d.ts +49 -0
  106. package/dist/core/group-proofs.d.ts.map +1 -0
  107. package/dist/core/group-proofs.js +102 -0
  108. package/dist/core/group-proofs.js.map +1 -0
  109. package/dist/core/identity-store.d.ts +5 -4
  110. package/dist/core/identity-store.d.ts.map +1 -1
  111. package/dist/core/identity-store.js +13 -16
  112. package/dist/core/identity-store.js.map +1 -1
  113. package/dist/core/issuer-identity-file.d.ts +25 -0
  114. package/dist/core/issuer-identity-file.d.ts.map +1 -0
  115. package/dist/core/issuer-identity-file.js +124 -0
  116. package/dist/core/issuer-identity-file.js.map +1 -0
  117. package/dist/core/machine-grouping.d.ts +47 -0
  118. package/dist/core/machine-grouping.d.ts.map +1 -0
  119. package/dist/core/machine-grouping.js +102 -0
  120. package/dist/core/machine-grouping.js.map +1 -0
  121. package/dist/core/machine-identity.d.ts +19 -0
  122. package/dist/core/machine-identity.d.ts.map +1 -0
  123. package/dist/core/machine-identity.js +42 -0
  124. package/dist/core/machine-identity.js.map +1 -0
  125. package/dist/core/machine-list-groups.d.ts +13 -0
  126. package/dist/core/machine-list-groups.d.ts.map +1 -0
  127. package/dist/core/machine-list-groups.js +41 -0
  128. package/dist/core/machine-list-groups.js.map +1 -0
  129. package/dist/core/machine-name-claim.d.ts +22 -0
  130. package/dist/core/machine-name-claim.d.ts.map +1 -0
  131. package/dist/core/machine-name-claim.js +52 -0
  132. package/dist/core/machine-name-claim.js.map +1 -0
  133. package/dist/core/membership-proof.d.ts +20 -9
  134. package/dist/core/membership-proof.d.ts.map +1 -1
  135. package/dist/core/membership-proof.js +41 -15
  136. package/dist/core/membership-proof.js.map +1 -1
  137. package/dist/core/membership-proofs.d.ts +16 -8
  138. package/dist/core/membership-proofs.d.ts.map +1 -1
  139. package/dist/core/membership-proofs.js +24 -12
  140. package/dist/core/membership-proofs.js.map +1 -1
  141. package/dist/core/mesh-graph-trace-tool.d.ts +3 -2
  142. package/dist/core/mesh-graph-trace-tool.d.ts.map +1 -1
  143. package/dist/core/mesh-graph-trace-tool.js +8 -5
  144. package/dist/core/mesh-graph-trace-tool.js.map +1 -1
  145. package/dist/core/mesh-store-shared.d.ts +4 -1
  146. package/dist/core/mesh-store-shared.d.ts.map +1 -1
  147. package/dist/core/mesh-store-shared.js.map +1 -1
  148. package/dist/core/mesh-store.d.ts +20 -10
  149. package/dist/core/mesh-store.d.ts.map +1 -1
  150. package/dist/core/mesh-store.js +45 -38
  151. package/dist/core/mesh-store.js.map +1 -1
  152. package/dist/core/name-claim.d.ts +38 -0
  153. package/dist/core/name-claim.d.ts.map +1 -0
  154. package/dist/core/name-claim.js +93 -0
  155. package/dist/core/name-claim.js.map +1 -0
  156. package/dist/core/naming-actions.d.ts +21 -0
  157. package/dist/core/naming-actions.d.ts.map +1 -0
  158. package/dist/core/naming-actions.js +58 -0
  159. package/dist/core/naming-actions.js.map +1 -0
  160. package/dist/core/naming.d.ts +50 -0
  161. package/dist/core/naming.d.ts.map +1 -0
  162. package/dist/core/naming.js +81 -0
  163. package/dist/core/naming.js.map +1 -0
  164. package/dist/core/network-interfaces.d.ts +7 -0
  165. package/dist/core/network-interfaces.d.ts.map +1 -0
  166. package/dist/core/network-interfaces.js +23 -0
  167. package/dist/core/network-interfaces.js.map +1 -0
  168. package/dist/core/peer-versions.d.ts +6 -0
  169. package/dist/core/peer-versions.d.ts.map +1 -1
  170. package/dist/core/peer-versions.js +17 -0
  171. package/dist/core/peer-versions.js.map +1 -1
  172. package/dist/core/petnames.d.ts +22 -0
  173. package/dist/core/petnames.d.ts.map +1 -0
  174. package/dist/core/petnames.js +102 -0
  175. package/dist/core/petnames.js.map +1 -0
  176. package/dist/core/room-path.d.ts +2 -0
  177. package/dist/core/room-path.d.ts.map +1 -1
  178. package/dist/core/room-path.js +5 -1
  179. package/dist/core/room-path.js.map +1 -1
  180. package/dist/core/store.d.ts +4 -0
  181. package/dist/core/store.d.ts.map +1 -1
  182. package/dist/core/store.js +19 -2
  183. package/dist/core/store.js.map +1 -1
  184. package/dist/core/tool.d.ts +16 -5
  185. package/dist/core/tool.d.ts.map +1 -1
  186. package/dist/core/tool.js +59 -13
  187. package/dist/core/tool.js.map +1 -1
  188. package/dist/core/types.d.ts +28 -0
  189. package/dist/core/types.d.ts.map +1 -1
  190. package/dist/core/types.js +18 -0
  191. package/dist/core/types.js.map +1 -1
  192. package/dist/core/user-identity.d.ts +4 -6
  193. package/dist/core/user-identity.d.ts.map +1 -1
  194. package/dist/core/user-identity.js +9 -113
  195. package/dist/core/user-identity.js.map +1 -1
  196. package/dist/core/wire-mesh-transport-options.d.ts +2 -2
  197. package/dist/core/wire-mesh-transport-options.d.ts.map +1 -1
  198. package/dist/core/wire-mesh-transport.d.ts.map +1 -1
  199. package/dist/core/wire-mesh-transport.js +7 -7
  200. package/dist/core/wire-mesh-transport.js.map +1 -1
  201. package/dist/test/agent-table.unit.test.d.ts +5 -0
  202. package/dist/test/agent-table.unit.test.d.ts.map +1 -0
  203. package/dist/test/agent-table.unit.test.js +53 -0
  204. package/dist/test/agent-table.unit.test.js.map +1 -0
  205. package/dist/test/delivery-engine-delivery.unit.test.js +2 -0
  206. package/dist/test/delivery-engine-delivery.unit.test.js.map +1 -1
  207. package/dist/test/delivery-engine-directed-notify.unit.test.js +2 -0
  208. package/dist/test/delivery-engine-directed-notify.unit.test.js.map +1 -1
  209. package/dist/test/delivery-engine-own-agent.unit.test.js +2 -0
  210. package/dist/test/delivery-engine-own-agent.unit.test.js.map +1 -1
  211. package/dist/test/delivery-engine.unit.test.js +2 -0
  212. package/dist/test/delivery-engine.unit.test.js.map +1 -1
  213. package/dist/test/device-membership-verification.unit.test.js +25 -25
  214. package/dist/test/device-membership-verification.unit.test.js.map +1 -1
  215. package/dist/test/device-membership.unit.test.js +6 -6
  216. package/dist/test/device-membership.unit.test.js.map +1 -1
  217. package/dist/test/directory-admission.unit.test.js +103 -7
  218. package/dist/test/directory-admission.unit.test.js.map +1 -1
  219. package/dist/test/display-name.unit.test.d.ts +5 -0
  220. package/dist/test/display-name.unit.test.d.ts.map +1 -0
  221. package/dist/test/display-name.unit.test.js +65 -0
  222. package/dist/test/display-name.unit.test.js.map +1 -0
  223. package/dist/test/gateway-trust-tool.integration.test.js +117 -4
  224. package/dist/test/gateway-trust-tool.integration.test.js.map +1 -1
  225. package/dist/test/gateway-trust.unit.test.js +62 -13
  226. package/dist/test/gateway-trust.unit.test.js.map +1 -1
  227. package/dist/test/gossip-directory.unit.test.js +14 -1
  228. package/dist/test/gossip-directory.unit.test.js.map +1 -1
  229. package/dist/test/hub-exposure.integration.test.js +1 -1
  230. package/dist/test/hub-exposure.integration.test.js.map +1 -1
  231. package/dist/test/identity-restart.integration.test.js +3 -0
  232. package/dist/test/identity-restart.integration.test.js.map +1 -1
  233. package/dist/test/identity-store.integration.test.js +64 -14
  234. package/dist/test/identity-store.integration.test.js.map +1 -1
  235. package/dist/test/machine-grouping.unit.test.d.ts +2 -0
  236. package/dist/test/machine-grouping.unit.test.d.ts.map +1 -0
  237. package/dist/test/machine-grouping.unit.test.js +68 -0
  238. package/dist/test/machine-grouping.unit.test.js.map +1 -0
  239. package/dist/test/machine-identity.unit.test.d.ts +5 -0
  240. package/dist/test/machine-identity.unit.test.d.ts.map +1 -0
  241. package/dist/test/machine-identity.unit.test.js +80 -0
  242. package/dist/test/machine-identity.unit.test.js.map +1 -0
  243. package/dist/test/machine-list-groups.unit.test.d.ts +5 -0
  244. package/dist/test/machine-list-groups.unit.test.d.ts.map +1 -0
  245. package/dist/test/machine-list-groups.unit.test.js +61 -0
  246. package/dist/test/machine-list-groups.unit.test.js.map +1 -0
  247. package/dist/test/machine-membership-trust.integration.test.d.ts +5 -0
  248. package/dist/test/machine-membership-trust.integration.test.d.ts.map +1 -0
  249. package/dist/test/machine-membership-trust.integration.test.js +152 -0
  250. package/dist/test/machine-membership-trust.integration.test.js.map +1 -0
  251. package/dist/test/membership-proof.unit.test.js +105 -13
  252. package/dist/test/membership-proof.unit.test.js.map +1 -1
  253. package/dist/test/name-claim.unit.test.d.ts +5 -0
  254. package/dist/test/name-claim.unit.test.d.ts.map +1 -0
  255. package/dist/test/name-claim.unit.test.js +135 -0
  256. package/dist/test/name-claim.unit.test.js.map +1 -0
  257. package/dist/test/naming.integration.test.d.ts +5 -0
  258. package/dist/test/naming.integration.test.d.ts.map +1 -0
  259. package/dist/test/naming.integration.test.js +188 -0
  260. package/dist/test/naming.integration.test.js.map +1 -0
  261. package/dist/test/petnames.unit.test.d.ts +5 -0
  262. package/dist/test/petnames.unit.test.d.ts.map +1 -0
  263. package/dist/test/petnames.unit.test.js +94 -0
  264. package/dist/test/petnames.unit.test.js.map +1 -0
  265. package/dist/test/principal-membership-trust.integration.test.js +2 -1
  266. package/dist/test/principal-membership-trust.integration.test.js.map +1 -1
  267. package/dist/test/room-join-admission.integration.test.js +3 -0
  268. package/dist/test/room-join-admission.integration.test.js.map +1 -1
  269. package/dist/test/room-lifecycle-bare-name.unit.test.js +2 -0
  270. package/dist/test/room-lifecycle-bare-name.unit.test.js.map +1 -1
  271. package/dist/test/room-lifecycle-membership.unit.test.js +2 -0
  272. package/dist/test/room-lifecycle-membership.unit.test.js.map +1 -1
  273. package/dist/test/room-lifecycle-remote.unit.test.js +2 -0
  274. package/dist/test/room-lifecycle-remote.unit.test.js.map +1 -1
  275. package/dist/test/room-lifecycle.unit.test.js +2 -0
  276. package/dist/test/room-lifecycle.unit.test.js.map +1 -1
  277. package/dist/test/room-messaging-durable-send.unit.test.js +2 -0
  278. package/dist/test/room-messaging-durable-send.unit.test.js.map +1 -1
  279. package/dist/test/room-messaging.unit.test.js +2 -0
  280. package/dist/test/room-messaging.unit.test.js.map +1 -1
  281. package/dist/test/room-protocol-notify.unit.test.js +2 -0
  282. package/dist/test/room-protocol-notify.unit.test.js.map +1 -1
  283. package/dist/test/room-protocol.helper.d.ts.map +1 -1
  284. package/dist/test/room-protocol.helper.js +2 -0
  285. package/dist/test/room-protocol.helper.js.map +1 -1
  286. package/dist/test/room-send-retry.integration.test.js +3 -0
  287. package/dist/test/room-send-retry.integration.test.js.map +1 -1
  288. package/dist/test/test-transport.d.ts +3 -0
  289. package/dist/test/test-transport.d.ts.map +1 -1
  290. package/dist/test/test-transport.js +8 -1
  291. package/dist/test/test-transport.js.map +1 -1
  292. package/dist/test/user-identity.unit.test.js +40 -14
  293. package/dist/test/user-identity.unit.test.js.map +1 -1
  294. package/package.json +1 -1
@@ -1,11 +1,12 @@
1
1
  /**
2
- * A device's own membership proof, kept fresh, and the check for other devices' proofs (agent-comms#266). Split out of MeshStore, which hands it its identity, peer id and error sink.
2
+ * A device's own membership proof under one grouping issuer, kept fresh, and the checks for other devices' proofs (agent-comms#266, agent-comms#343). MeshStore holds one instance per issuer, its user principal and its machine, and hands each its identity, peer id and error sink. The checks do not depend on which issuer an instance mints under, so either instance can verify or identify any proof.
3
3
  */
4
4
  import { deviceIdFromHex } from "wire-mesh-core/domain/device-id";
5
- import { MEMBERSHIP_PROOF_LIFETIME_MS, mintMembershipProof, verifyMembershipProof, } from "./membership-proof.js";
5
+ import { MEMBERSHIP_PROOF_LIFETIME_MS, identifyMembershipProofIssuer, mintMembershipProof, verifyMembershipProof, } from "./membership-proof.js";
6
6
  /** How many times per proof lifetime the proof is re-minted, so a missed tick or two never lets the advertised proof lapse. */
7
7
  const REFRESHES_PER_LIFETIME = 3;
8
- const REFRESH_INTERVAL_MS = MEMBERSHIP_PROOF_LIFETIME_MS / REFRESHES_PER_LIFETIME;
8
+ /** How often an advertised proof, or a name claim riding beside it, is re-minted. */
9
+ export const PROOF_REFRESH_INTERVAL_MS = MEMBERSHIP_PROOF_LIFETIME_MS / REFRESHES_PER_LIFETIME;
9
10
  export class MembershipProofs {
10
11
  deps;
11
12
  proof;
@@ -14,9 +15,9 @@ export class MembershipProofs {
14
15
  constructor(deps) {
15
16
  this.deps = deps;
16
17
  }
17
- /** The agent/self advert field carrying this device's current proof, empty until the first has been minted. */
18
- advertField() {
19
- return this.proof === undefined ? {} : { membership: this.proof };
18
+ /** This device's current proof, undefined until the first has been minted. */
19
+ current() {
20
+ return this.proof;
20
21
  }
21
22
  /** Mints a proof now and again on an interval. A failed mint is reported and retried on the next tick; the previous proof stays until it lapses. */
22
23
  start() {
@@ -24,20 +25,31 @@ export class MembershipProofs {
24
25
  this.refresh();
25
26
  this.timer = setInterval(() => {
26
27
  this.refresh();
27
- }, REFRESH_INTERVAL_MS);
28
+ }, PROOF_REFRESH_INTERVAL_MS);
28
29
  this.timer.unref();
29
30
  }
30
31
  stop() {
31
32
  clearInterval(this.timer);
32
33
  this.timer = undefined;
33
34
  }
34
- /** Whether a gossiped proof shows that principalHex vouches for deviceHex, as this node sees it: its own identity, clock and revocation view. */
35
+ /** Whether a gossiped proof shows that issuerHex vouches for deviceHex, as this node sees it: its own identity, clock and revocation view. */
35
36
  async verify(claim) {
36
37
  const { identity, clock, revocation } = this.deps.getIdentity();
37
38
  return verifyMembershipProof({
38
39
  proof: claim.proof,
39
40
  deviceId: deviceIdFromHex(claim.deviceHex),
40
- principalId: deviceIdFromHex(claim.principalHex),
41
+ issuerId: deviceIdFromHex(claim.issuerHex),
42
+ identity,
43
+ clock,
44
+ revocation,
45
+ });
46
+ }
47
+ /** Which issuer a gossiped proof shows vouching for deviceHex, as this node sees it. */
48
+ async identify(claim) {
49
+ const { identity, clock, revocation } = this.deps.getIdentity();
50
+ return identifyMembershipProofIssuer({
51
+ proof: claim.proof,
52
+ deviceId: deviceIdFromHex(claim.deviceHex),
41
53
  identity,
42
54
  clock,
43
55
  revocation,
@@ -47,10 +59,10 @@ export class MembershipProofs {
47
59
  if (this.minting)
48
60
  return;
49
61
  this.minting = true;
50
- const { userIdentity, clock } = this.deps.getIdentity();
62
+ const storeIdentity = this.deps.getIdentity();
51
63
  mintMembershipProof({
52
- userIdentity,
53
- clock,
64
+ issuer: this.deps.issuerOf(storeIdentity),
65
+ clock: storeIdentity.clock,
54
66
  deviceId: deviceIdFromHex(this.deps.getPeerId()),
55
67
  })
56
68
  .then((proof) => {
@@ -1 +1 @@
1
- {"version":3,"file":"membership-proofs.js","sourceRoot":"","sources":["../../src/core/membership-proofs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,+HAA+H;AAC/H,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,mBAAmB,GACvB,4BAA4B,GAAG,sBAAsB,CAAC;AAUxD,MAAM,OAAO,gBAAgB;IAKE;IAJrB,KAAK,CAAqB;IAC1B,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,CAA6C;IAE1D,YAA6B,IAAoC;QAApC,SAAI,GAAJ,IAAI,CAAgC;IAAG,CAAC;IAErE,+GAA+G;IAC/G,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACpE,CAAC;IAED,oJAAoJ;IACpJ,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,iJAAiJ;IACjJ,KAAK,CAAC,MAAM,CACV,KAA2E;QAE3E,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChE,OAAO,qBAAqB,CAAC;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC;YAChD,QAAQ;YACR,KAAK;YACL,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACxD,mBAAmB,CAAC;YAClB,YAAY;YACZ,KAAK;YACL,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;SACjD,CAAC;aACC,IAAI,CACH,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACJ,CAAC,CACF;aACA,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;CACF"}
1
+ {"version":3,"file":"membership-proofs.js","sourceRoot":"","sources":["../../src/core/membership-proofs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,mBAAmB,EACnB,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;AAE/B,+HAA+H;AAC/H,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GACpC,4BAA4B,GAAG,sBAAsB,CAAC;AAYxD,MAAM,OAAO,gBAAgB;IAKE;IAJrB,KAAK,CAAqB;IAC1B,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,CAA6C;IAE1D,YAA6B,IAAoC;QAApC,SAAI,GAAJ,IAAI,CAAgC;IAAG,CAAC;IAErE,8EAA8E;IAC9E,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,oJAAoJ;IACpJ,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,8IAA8I;IAC9I,KAAK,CAAC,MAAM,CACV,KAAwE;QAExE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChE,OAAO,qBAAqB,CAAC;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,QAAQ;YACR,KAAK;YACL,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,QAAQ,CACZ,KAAqD;QAErD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChE,OAAO,6BAA6B,CAAC;YACnC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,QAAQ;YACR,KAAK;YACL,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9C,mBAAmB,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YACzC,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;SACjD,CAAC;aACC,IAAI,CACH,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACJ,CAAC,CACF;aACA,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;CACF"}
@@ -3,8 +3,9 @@
3
3
  */
4
4
  import type { CommsAction } from "./types.js";
5
5
  import type { CommsResult, MeshOnlyFeatures } from "./tool.js";
6
- /** Reports every known device (nodes) and every self-reported connection edge between them (edges), assembled from the cached gossip directory -- a cheap, possibly-stale snapshot; meshTraceAction below is the live, cache-bust counterpart for one specific device. */
7
- export declare function meshGraphAction(store: Readonly<Pick<MeshOnlyFeatures, "meshGraph">>): CommsResult;
6
+ import { type Namer } from "./naming.js";
7
+ /** Reports every known device (nodes, each by its full id, which mesh_trace takes, and its display name from namer) and every self-reported connection edge between them (edges, by display name), assembled from the cached gossip directory: a cheap, possibly-stale snapshot; meshTraceAction below is the live, cache-bust counterpart for one specific device. */
8
+ export declare function meshGraphAction(store: Readonly<Pick<MeshOnlyFeatures, "meshGraph">>, namer: Namer): CommsResult;
8
9
  /** Sends path.trace to action.target and reports the real end-to-end RTT plus each side's own relayed/hub-address knowledge -- the live counterpart to meshGraphAction's gossiped snapshot. */
9
10
  export declare function meshTraceAction(store: Readonly<Pick<MeshOnlyFeatures, "meshTrace">>, action: CommsAction & {
10
11
  action: "mesh_trace";
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-graph-trace-tool.d.ts","sourceRoot":"","sources":["../../src/core/mesh-graph-trace-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAc/D,0QAA0Q;AAC1Q,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,GACnD,WAAW,CAiBb;AAED,+LAA+L;AAC/L,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,EACpD,MAAM,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAC7C,OAAO,CAAC,WAAW,CAAC,CA+BtB"}
1
+ {"version":3,"file":"mesh-graph-trace-tool.d.ts","sourceRoot":"","sources":["../../src/core/mesh-graph-trace-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAatD,uWAAuW;AACvW,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,EACpD,KAAK,EAAE,KAAK,GACX,WAAW,CAmBb;AAED,+LAA+L;AAC/L,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,EACpD,MAAM,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAC7C,OAAO,CAAC,WAAW,CAAC,CA+BtB"}
@@ -2,6 +2,7 @@
2
2
  * CommsTool's mesh_graph/mesh_trace action handlers (agent-comms#199) -- split out of tool.ts purely to keep that file under the repo's max-lines cap, the same reason gateway-trust-actions.ts/connection-code-tool.ts were split from it. Free functions over MeshOnlyFeatures's own meshGraph/meshTrace methods rather than class methods, since CommsTool owns no state of its own for this concern.
3
3
  */
4
4
  import { tryMeshAction } from "./tool.js";
5
+ import { idWithNames } from "./naming.js";
5
6
  /** Column width the "direct"/"relay" edge-kind label is padded to in meshGraphAction's own listing, matching tool.ts's own aligned-column convention for every other tabular action result. */
6
7
  const MESH_GRAPH_EDGE_KIND_COLUMN_WIDTH = 6;
7
8
  /** Uniform "this bridge isn't backed by a mesh transport" result, mirroring tool.ts's own notMeshBacked for the other MeshOnlyFeatures methods (not exported from there, so re-declared locally the same way gateway-trust-actions.ts's own gatewayTrustUnavailable already does). */
@@ -11,20 +12,22 @@ function meshFeatureUnavailable(action) {
11
12
  content: `${action} requires a mesh-backed store (this session is running on FileStore)`,
12
13
  };
13
14
  }
14
- /** Reports every known device (nodes) and every self-reported connection edge between them (edges), assembled from the cached gossip directory -- a cheap, possibly-stale snapshot; meshTraceAction below is the live, cache-bust counterpart for one specific device. */
15
- export function meshGraphAction(store) {
15
+ /** Reports every known device (nodes, each by its full id, which mesh_trace takes, and its display name from namer) and every self-reported connection edge between them (edges, by display name), assembled from the cached gossip directory: a cheap, possibly-stale snapshot; meshTraceAction below is the live, cache-bust counterpart for one specific device. */
16
+ export function meshGraphAction(store, namer) {
16
17
  if (!store.meshGraph)
17
18
  return meshFeatureUnavailable("mesh_graph");
18
19
  const graph = store.meshGraph();
19
20
  if (graph.nodes.length === 0)
20
21
  return { content: "No known devices in the mesh graph.", isError: false };
21
22
  const edgeLines = graph.edges.map((edge) => {
22
- const via = edge.kind === "relay" && edge.via !== undefined ? ` via ${edge.via}` : "";
23
- return ` ${edge.kind.padEnd(MESH_GRAPH_EDGE_KIND_COLUMN_WIDTH)} ${edge.from} -> ${edge.to}${via}`;
23
+ const via = edge.kind === "relay" && edge.via !== undefined
24
+ ? ` via ${namer(edge.via)}`
25
+ : "";
26
+ return ` ${edge.kind.padEnd(MESH_GRAPH_EDGE_KIND_COLUMN_WIDTH)} ${namer(edge.from)} -> ${namer(edge.to)}${via}`;
24
27
  });
25
28
  const edgesBlock = edgeLines.length > 0 ? edgeLines.join("\n") : " (no edges reported)";
26
29
  return {
27
- content: `Mesh graph:\nNodes (${String(graph.nodes.length)}): ${graph.nodes.join(", ")}\nEdges:\n${edgesBlock}`,
30
+ content: `Mesh graph:\nNodes (${String(graph.nodes.length)}):\n${graph.nodes.map((node) => ` ${idWithNames(node, namer)}`).join("\n")}\nEdges:\n${edgesBlock}`,
28
31
  isError: false,
29
32
  };
30
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-graph-trace-tool.js","sourceRoot":"","sources":["../../src/core/mesh-graph-trace-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mesh-graph-trace-tool.js","sourceRoot":"","sources":["../../src/core/mesh-graph-trace-tool.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,8 @@ import type { RevocationView } from "wire-mesh-core/domain/revocation-view";
7
7
  import type { KeyValueStorage } from "wire-mesh-core/ports/storage";
8
8
  import type { IdentitySlot } from "./identity-store.js";
9
9
  import type { UserIdentityOptions } from "./user-identity.js";
10
- /** The identity/clock/persistence collaborators MeshStore mints and persists room-membership grants against. Set via setIdentity(), mirroring the transport's own setTransport() contract. dataStorage backs this device's own room-notice oplog (P5, agent-comms#50) -- the same KeyValueStorage instance WireMeshTransport's own dataStorage constructor parameter is wired with, so a durable sendRoomMessage and the transport's own data-domain responder read and write the identical log. userIdentity/userIdentityOptions are the user-principal identity (user-identity.ts, agent-comms#160) this store's own bridge slot shares with every other bridge on this machine account -- distinct from `identity` above, which is this specific bridge's own per-slot device identity; userIdentity is what a dm:send grant (agent-comms#162) is minted and verified against. userIdentityOptions is threaded through purely so RoomLifecycle's own admit/revoke methods can find the same on-disk record userIdentity was loaded from, to persist issued-grant bookkeeping against it. */
10
+ import type { MachineIdentityOptions } from "./machine-identity.js";
11
+ /** The identity/clock/persistence collaborators MeshStore mints and persists room-membership grants against. Set via setIdentity(), mirroring the transport's own setTransport() contract. dataStorage backs this device's own room-notice oplog (P5, agent-comms#50): the same KeyValueStorage instance WireMeshTransport's own dataStorage constructor parameter is wired with, so a durable sendRoomMessage and the transport's own data-domain responder read and write the identical log. userIdentity/userIdentityOptions are the user-principal identity (user-identity.ts, agent-comms#160) this store's own bridge slot shares with every other bridge of this account, distinct from `identity`, which is this specific bridge's own per-slot device identity; userIdentity is what a dm:send grant (agent-comms#162) is minted and verified against. userIdentityOptions is threaded through purely so RoomLifecycle's own admit/revoke methods can find the same on-disk record userIdentity was loaded from, to persist issued-grant bookkeeping against it. machineIdentity is this account's machine identity for the host (machine-identity.ts, agent-comms#343), shared by every bridge the account runs there: the second grouping issuer this store's device is vouched for by. machineIdentityOptions locates the file it was loaded from, where the machine's self display name (agent-comms#345) is kept. */
11
12
  export interface MeshStoreIdentity {
12
13
  identity: IdentityPort;
13
14
  clock: Clock;
@@ -16,6 +17,8 @@ export interface MeshStoreIdentity {
16
17
  dataStorage: KeyValueStorage;
17
18
  userIdentity: IdentityPort;
18
19
  userIdentityOptions: Readonly<UserIdentityOptions>;
20
+ machineIdentity: IdentityPort;
21
+ machineIdentityOptions: Readonly<MachineIdentityOptions>;
19
22
  }
20
23
  export declare const ROOM_TOKEN_LIFETIME_MS: number;
21
24
  export declare const DM_SEND_GRANT_LIFETIME_MS: number;
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-store-shared.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store-shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,+hCAA+hC;AAC/hC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;CACpD;AAUD,eAAO,MAAM,sBAAsB,QAKpB,CAAC;AAIhB,eAAO,MAAM,yBAAyB,QAKvB,CAAC;AAEhB,mPAAmP;AACnP,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,2QAA2Q;AAC3Q,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAIxD,eAAO,MAAM,2BAA2B,QAIzB,CAAC;AAEhB,yPAAyP;AACzP,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,4TAA4T;AAC5T,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAOvD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,EAC1C,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAgBlD"}
1
+ {"version":3,"file":"mesh-store-shared.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store-shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,m2CAAm2C;AACn2C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACnD,eAAe,EAAE,YAAY,CAAC;IAC9B,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;CAC1D;AAUD,eAAO,MAAM,sBAAsB,QAKpB,CAAC;AAIhB,eAAO,MAAM,yBAAyB,QAKvB,CAAC;AAEhB,mPAAmP;AACnP,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,2QAA2Q;AAC3Q,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAIxD,eAAO,MAAM,2BAA2B,QAIzB,CAAC;AAEhB,yPAAyP;AACzP,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,4TAA4T;AAC5T,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAOvD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,EAC1C,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAgBlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-store-shared.js","sourceRoot":"","sources":["../../src/core/mesh-store-shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH;;GAEG;AACH,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,sBAAsB,GACjC,wBAAwB;IACxB,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,aAAa,CAAC;AAEhB,iUAAiU;AACjU,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GACpC,2BAA2B;IAC3B,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,aAAa,CAAC;AAQhB;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,2QAA2Q;AAC3Q,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,uXAAuX;AACvX,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GACtC,8BAA8B;IAC9B,gBAAgB;IAChB,kBAAkB;IAClB,aAAa,CAAC;AAEhB,yPAAyP;AACzP,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C,4TAA4T;AAC5T,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEvD,mKAAmK;AACnK,SAAS,eAAe,CAAiC,KAAQ;IAC/D,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAEnC,KAAmB,EAAE,QAAsB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"mesh-store-shared.js","sourceRoot":"","sources":["../../src/core/mesh-store-shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH;;GAEG;AACH,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,sBAAsB,GACjC,wBAAwB;IACxB,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,aAAa,CAAC;AAEhB,iUAAiU;AACjU,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GACpC,2BAA2B;IAC3B,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,aAAa,CAAC;AAQhB;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,2QAA2Q;AAC3Q,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,uXAAuX;AACvX,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GACtC,8BAA8B;IAC9B,gBAAgB;IAChB,kBAAkB;IAClB,aAAa,CAAC;AAEhB,yPAAyP;AACzP,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C,4TAA4T;AAC5T,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEvD,mKAAmK;AACnK,SAAS,eAAe,CAAiC,KAAQ;IAC/D,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAEnC,KAAmB,EAAE,QAAsB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -7,10 +7,11 @@
7
7
  *
8
8
  * MeshStore itself is an orchestrator: it owns the shared state (the core agents/rooms/messages/dms/deliveryQueues Maps and a handful of smaller fields) and constructs the collaborators that implement almost every behaviour against direct references into that state -- DeliveryEngine, RoomProtocol, RoomMessaging, RoomLifecycle, AgentRegistry, ConnectionApproval, StaleAgentChecker, and PeerLifecycle. Every public method below that isn't inherently a MeshStore-level concern (transport/identity wiring, init/shutdown lifecycle, the events getter, mesh visibility, listener management) is a thin delegating wrapper to whichever collaborator now owns the real implementation, kept here only because CommsStore/MeshOnlyFeatures and a handful of concrete-only call sites (tests, bridge-mesh.ts, the web server, etc.) reach these names directly on a MeshStore-typed value.
9
9
  */
10
- import { MembershipProofs } from "./membership-proofs.js";
10
+ import { GroupProofs } from "./group-proofs.js";
11
+ import { Naming } from "./naming.js";
11
12
  import { DiscoveryManager } from "./discovery.js";
12
13
  import type { MeshStoreIdentity } from "./mesh-store-shared.js";
13
- import { GatewayTrust } from "./gateway-trust.js";
14
+ import { GatewayTrust, type VerifiedMember } from "./gateway-trust.js";
14
15
  import { type GenerateConnectionCodeOptions, type RedeemConnectionCodeOptions, type RedeemConnectionCodeResult } from "./connection-code.js";
15
16
  import type { MeshStoreOptions } from "./mesh-store-options.js";
16
17
  import type { IncomingManageRequest } from "wire-mesh-core/domain/mesh-session";
@@ -32,8 +33,8 @@ export declare class MeshStore implements CommsStore {
32
33
  readonly roomJoinApprovalTimeoutMs: number;
33
34
  /** Forwards a collaborator's failure to this store's own error channel, normalising a non-Error rejection on the way so a bridge always sees one shape. An arrow field rather than a method, so every collaborator can take it as a bare callback reference. */
34
35
  private readonly reportError;
35
- /** This device's own membership proof and the check for other devices' proofs (agent-comms#266). */
36
- readonly membership: MembershipProofs;
36
+ /** This device's own membership proofs under its user principal and its machine, and the checks for other devices' proofs (agent-comms#266, agent-comms#343). */
37
+ readonly membership: GroupProofs;
37
38
  private readonly agents;
38
39
  private readonly rooms;
39
40
  private readonly messages;
@@ -52,6 +53,8 @@ export declare class MeshStore implements CommsStore {
52
53
  discovery: DiscoveryManager;
53
54
  /** The cross-machine trust boundary (agent-comms#156), constructed once in the constructor below (mirroring discovery above) and shared with WireMeshTransport by every construction site (bridge-mesh.ts, test-transport.ts) that passes it into WireMeshTransport's own constructor, so store.addTrustedGateway() and the transport's own hub-forwarding/hub-session gates read the exact same set. Persists across restarts (agent-comms#186) when a slot is passed to this store's own constructor; stays in-memory only, exactly as before, for every construction site that omits one. Public so those construction sites can reach it; addTrustedGateway/removeTrustedGateway/listTrustedGateways below are the methods CommsTool actually calls through MeshOnlyFeatures. */
54
55
  readonly gatewayTrust: GatewayTrust;
56
+ /** Petnames, this machine's own name, and the namer every listing formats ids with (agent-comms#345). Handed to CommsTool alongside discovery. Petnames live beside gatewayTrust's file when a slot is given, in memory otherwise. */
57
+ readonly naming: Naming;
55
58
  /** The connection-code generate/redeem pair (agent-comms#188) bootstrapping gatewayTrust above between two devices with no existing mesh connection. Persists across restarts per slot, from the slot passed to this store's own constructor, whereas gatewayTrust is shared by every slot in the slot's identity directory. generateConnectionCode/redeemConnectionCode below are the methods CommsTool actually calls through MeshOnlyFeatures; redeemConnectionCode is also where a successful redemption's deviceId gets fed into gatewayTrust.add, the actual point of this whole bootstrap. */
56
59
  private readonly connectionCodes;
57
60
  private readonly deliveryEngine;
@@ -75,7 +78,7 @@ export declare class MeshStore implements CommsStore {
75
78
  /** This store's own gossip-safe agent-identity advert, synchronously, in the shape WireMeshTransport's own gossip re-advertisement timer reads on every tick -- the write half of P3.8's eventual agent register/update/offline retirement (agent-comms#48). undefined before registerAgent has ever run (nothing to advertise yet), or when this agent's own visibility isn't "visible" -- gossip already reaches every connected peer regardless of mesh-approval status (see wire-mesh-transport.ts's own allSessions/quarantine comments), so advertising a hidden or ghost agent's identity this way would leak exactly what those visibility levels exist to withhold. */
76
79
  get selfAgentAdvert(): AgentSelfAdvert | undefined;
77
80
  /**
78
- * Whether this store should hold a hub session right now. It has something to say to another machine only when it has an agent that is not a ghost and its machine trusts at least one remote device or principal. Until then, holding a session would put its device id on a public hub for nobody's benefit, and a ghost agent is by definition not reachable from anywhere. A hidden agent does hold one, and advertises only the device advert every session opens with, which is what lets it be reached by device id.
81
+ * Whether this store should hold a hub session right now. It has something to say to another machine only when it has an agent that is not a ghost and its machine trusts at least one remote device, principal or machine. Until then, holding a session would put its device id on a public hub for nobody's benefit, and a ghost agent is by definition not reachable from anywhere. A hidden agent does hold one, and advertises only the device advert every session opens with, which is what lets it be reached by device id.
79
82
  */
80
83
  private wantsHubSession;
81
84
  /** Has the hub session re-evaluate wantsHubSession now, after a change to the agent or to the trust that it reads. Changes made by another process reach it within the link's poll interval instead. */
@@ -114,11 +117,10 @@ export declare class MeshStore implements CommsStore {
114
117
  private requireTransport;
115
118
  /** Sets the identity/clock/slot this store mints and persists room-membership grants against. Must be called before createRoom() or any other identity-using method, mirroring setTransport()'s own contract. */
116
119
  setIdentity(identity: MeshStoreIdentity): void;
117
- /** Every device this side trusts only because a trusted principal vouches for it, with that principal. */
118
- listVerifiedMembers(): {
119
- device: string;
120
- principal: string;
121
- }[];
120
+ /** Every device this side trusts only because a trusted principal or machine vouches for it, with that issuer. */
121
+ listVerifiedMembers(): VerifiedMember[];
122
+ /** The machine (hex) of each device this side can place on one, keyed by device id (agent-comms#343): this device's own, and every gossiped device carrying a valid machine proof. Empty before this store's identity is attached. */
123
+ listAgentMachines(): Promise<Map<string, string>>;
122
124
  /** The set identity, or throws if setIdentity() hasn't been called yet -- the single place every identity-using method reads through, mirroring requireTransport() above. */
123
125
  private requireIdentity;
124
126
  init(): Promise<void>;
@@ -160,6 +162,8 @@ export declare class MeshStore implements CommsStore {
160
162
  presentDmGrant(counterpart: string, grant: CapabilityToken): Promise<void>;
161
163
  /** This user's own principal id (hex): the identity every device on this account shares, and the thing another user names to admit or trust this whole user rather than one device. Undefined until this store's identity is attached. */
162
164
  getUserPrincipalId(): string | undefined;
165
+ /** This store's machine id (hex, agent-comms#343): the identity every bridge this OS account runs on the host shares, and the thing another machine names to trust or revoke all of them at once. Undefined until this store's identity is attached. */
166
+ getMachineId(): string | undefined;
163
167
  /** Admits bearerId into this user's own DM-communication scope (agent-comms#162): mints and persists a dm:send grant, self-signed by this store's own user principal. Returns the minted token for the caller to deliver to bearerId out of band. Deliberately outside the CommsStore interface, like requestDmAccess above. Concrete-only -- reached directly by tests. delegationsRemaining defaults to 0 (non-delegable, the original behaviour); a positive value admits bearerId as a user principal capable of sub-delegating to its own devices (agent-comms#187) -- see RoomLifecycle.admitAgentForDm's own doc comment. */
164
168
  admitAgentForDm(bearerId: string, delegationsRemaining?: number): Promise<CapabilityToken>;
165
169
  /** Revokes bearerId's own dm:send grant for real (agent-comms#162), the DM-scope counterpart to kickFromRoom. A no-op if bearerId was never admitted. Deliberately outside the CommsStore interface, like requestDmAccess above. Concrete-only -- reached directly by tests. */
@@ -242,6 +246,12 @@ export declare class MeshStore implements CommsStore {
242
246
  removeTrustedGatewayPrincipal(deviceHex: string): void;
243
247
  /** Every currently trusted remote user-principal device-id (hex). */
244
248
  listTrustedGatewayPrincipals(): string[];
249
+ /** Trusts a remote machine device-id (hex, agent-comms#343): every device whose gossiped proof that machine vouches for becomes reachable without being trusted individually. */
250
+ addTrustedGatewayMachine(deviceHex: string): void;
251
+ /** Withdraws trust from a remote machine device-id (hex), and with it every device reachable only through that machine: revoking every bridge that machine key vouches for in one act. A no-op if it was never trusted. */
252
+ removeTrustedGatewayMachine(deviceHex: string): void;
253
+ /** Every currently trusted remote machine device-id (hex). */
254
+ listTrustedGatewayMachines(): string[];
245
255
  /** Generates a fresh single-use ConnectionCode vouching for this store's own device-id (peerId), for the operator to relay to a counterpart out of band. See ConnectionCodeLedger.generate's own doc comment for what options does. */
246
256
  generateConnectionCode(options?: Readonly<GenerateConnectionCodeOptions>): Promise<ConnectionCode>;
247
257
  /** Validates a candidate ConnectionCode (see ConnectionCodeLedger.redeem for the checks performed) and, only once it passes every check, trusts the device-id it vouches for via gatewayTrust.add -- the actual point of this whole bootstrap. A rejected candidate never reaches gatewayTrust at all. */
@@ -1 +1 @@
1
- {"version":3,"file":"mesh-store.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mesh-store.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@
8
8
  * MeshStore itself is an orchestrator: it owns the shared state (the core agents/rooms/messages/dms/deliveryQueues Maps and a handful of smaller fields) and constructs the collaborators that implement almost every behaviour against direct references into that state -- DeliveryEngine, RoomProtocol, RoomMessaging, RoomLifecycle, AgentRegistry, ConnectionApproval, StaleAgentChecker, and PeerLifecycle. Every public method below that isn't inherently a MeshStore-level concern (transport/identity wiring, init/shutdown lifecycle, the events getter, mesh visibility, listener management) is a thin delegating wrapper to whichever collaborator now owns the real implementation, kept here only because CommsStore/MeshOnlyFeatures and a handful of concrete-only call sites (tests, bridge-mesh.ts, the web server, etc.) reach these names directly on a MeshStore-typed value.
9
9
  */
10
10
  import { bytesToHex, deviceIdToHex } from "wire-mesh-core/domain/device-id";
11
- import * as os from "node:os";
12
- import { MembershipProofs } from "./membership-proofs.js";
11
+ import { GroupProofs } from "./group-proofs.js";
12
+ import { Naming } from "./naming.js";
13
+ import { Petnames } from "./petnames.js";
13
14
  import { ROOM_JOIN_APPROVAL_TIMEOUT_MS, ROOM_REQUEST_TIMEOUT_MS, } from "./request-timeouts.js";
14
15
  import { CommsError } from "./store.js";
15
16
  import { DiscoveryManager } from "./discovery.js";
@@ -29,7 +30,8 @@ import { StaleAgentChecker } from "./stale-agent-checker.js";
29
30
  import { PeerLifecycle } from "./peer-lifecycle.js";
30
31
  import { CoordinatorRole, } from "./coordinator-role.js";
31
32
  import { DEFAULT_PRESENCE_STALE_AFTER_MS } from "./gossip-extensions.js";
32
- import { getPeerAgentCommsVersions, getPeerWireMeshCoreVersion, } from "./peer-versions.js";
33
+ import { getPeerAgentCommsVersions, getPeerWireMeshCoreVersion, queryPeerVersion, } from "./peer-versions.js";
34
+ import { listNetworkInterfaces } from "./network-interfaces.js";
33
35
  import { createTransportEvents } from "./transport-events.js";
34
36
  // ---------------------------------------------------------------------------
35
37
  // Constants
@@ -51,10 +53,12 @@ export class MeshStore {
51
53
  reportError = (error) => {
52
54
  this.onError?.(error instanceof Error ? error : new Error(String(error)));
53
55
  };
54
- /** This device's own membership proof and the check for other devices' proofs (agent-comms#266). */
55
- membership = new MembershipProofs({
56
+ /** This device's own membership proofs under its user principal and its machine, and the checks for other devices' proofs (agent-comms#266, agent-comms#343). */
57
+ membership = new GroupProofs({
56
58
  getIdentity: () => this.requireIdentity(),
59
+ peekIdentity: () => this.storeIdentity,
57
60
  getPeerId: () => this.peerId,
61
+ requireTransport: () => this.requireTransport(),
58
62
  onError: this.reportError,
59
63
  });
60
64
  agents = new Map();
@@ -75,6 +79,8 @@ export class MeshStore {
75
79
  discovery;
76
80
  /** The cross-machine trust boundary (agent-comms#156), constructed once in the constructor below (mirroring discovery above) and shared with WireMeshTransport by every construction site (bridge-mesh.ts, test-transport.ts) that passes it into WireMeshTransport's own constructor, so store.addTrustedGateway() and the transport's own hub-forwarding/hub-session gates read the exact same set. Persists across restarts (agent-comms#186) when a slot is passed to this store's own constructor; stays in-memory only, exactly as before, for every construction site that omits one. Public so those construction sites can reach it; addTrustedGateway/removeTrustedGateway/listTrustedGateways below are the methods CommsTool actually calls through MeshOnlyFeatures. */
77
81
  gatewayTrust;
82
+ /** Petnames, this machine's own name, and the namer every listing formats ids with (agent-comms#345). Handed to CommsTool alongside discovery. Petnames live beside gatewayTrust's file when a slot is given, in memory otherwise. */
83
+ naming;
78
84
  /** The connection-code generate/redeem pair (agent-comms#188) bootstrapping gatewayTrust above between two devices with no existing mesh connection. Persists across restarts per slot, from the slot passed to this store's own constructor, whereas gatewayTrust is shared by every slot in the slot's identity directory. generateConnectionCode/redeemConnectionCode below are the methods CommsTool actually calls through MeshOnlyFeatures; redeemConnectionCode is also where a successful redemption's deviceId gets fed into gatewayTrust.add, the actual point of this whole bootstrap. */
79
85
  connectionCodes;
80
86
  deliveryEngine;
@@ -129,11 +135,11 @@ export class MeshStore {
129
135
  startedAt: agent.startedAt,
130
136
  tags: agent.tags,
131
137
  subscribedRooms: agent.subscribedRooms,
132
- ...this.membership.advertField(),
138
+ ...this.membership.advertFields(),
133
139
  };
134
140
  }
135
141
  /**
136
- * Whether this store should hold a hub session right now. It has something to say to another machine only when it has an agent that is not a ghost and its machine trusts at least one remote device or principal. Until then, holding a session would put its device id on a public hub for nobody's benefit, and a ghost agent is by definition not reachable from anywhere. A hidden agent does hold one, and advertises only the device advert every session opens with, which is what lets it be reached by device id.
142
+ * Whether this store should hold a hub session right now. It has something to say to another machine only when it has an agent that is not a ghost and its machine trusts at least one remote device, principal or machine. Until then, holding a session would put its device id on a public hub for nobody's benefit, and a ghost agent is by definition not reachable from anywhere. A hidden agent does hold one, and advertises only the device advert every session opens with, which is what lets it be reached by device id.
137
143
  */
138
144
  wantsHubSession() {
139
145
  const self = this.agents.get(this.peerId);
@@ -195,6 +201,12 @@ export class MeshStore {
195
201
  this.hubUrl = hubUrl;
196
202
  this.roomJoinApprovalTimeoutMs = roomJoinApprovalTimeoutMs;
197
203
  this.gatewayTrust = new GatewayTrust(slot);
204
+ this.naming = new Naming({
205
+ petnames: new Petnames(slot),
206
+ machineNames: async () => this.membership.machineNames(),
207
+ listAgents: async (requesterId) => this.listAgents(requesterId),
208
+ saveMachineName: async (name) => this.membership.saveMachineName(name),
209
+ });
198
210
  this.connectionCodes = new ConnectionCodeLedger(slot);
199
211
  // Discovery manager — registers available backends
200
212
  this.discovery = new DiscoveryManager();
@@ -336,10 +348,14 @@ export class MeshStore {
336
348
  this.storeIdentity = identity;
337
349
  this.membership.start();
338
350
  }
339
- /** Every device this side trusts only because a trusted principal vouches for it, with that principal. */
351
+ /** Every device this side trusts only because a trusted principal or machine vouches for it, with that issuer. */
340
352
  listVerifiedMembers() {
341
353
  return this.gatewayTrust.listVerifiedMembers();
342
354
  }
355
+ /** The machine (hex) of each device this side can place on one, keyed by device id (agent-comms#343): this device's own, and every gossiped device carrying a valid machine proof. Empty before this store's identity is attached. */
356
+ async listAgentMachines() {
357
+ return this.membership.machinesByDevice();
358
+ }
343
359
  /** The set identity, or throws if setIdentity() hasn't been called yet -- the single place every identity-using method reads through, mirroring requireTransport() above. */
344
360
  requireIdentity() {
345
361
  if (this.storeIdentity === undefined) {
@@ -449,6 +465,11 @@ export class MeshStore {
449
465
  const user = this.storeIdentity?.userIdentity;
450
466
  return user === undefined ? undefined : deviceIdToHex(user.deviceId);
451
467
  }
468
+ /** This store's machine id (hex, agent-comms#343): the identity every bridge this OS account runs on the host shares, and the thing another machine names to trust or revoke all of them at once. Undefined until this store's identity is attached. */
469
+ getMachineId() {
470
+ const machine = this.storeIdentity?.machineIdentity;
471
+ return machine === undefined ? undefined : deviceIdToHex(machine.deviceId);
472
+ }
452
473
  /** Admits bearerId into this user's own DM-communication scope (agent-comms#162): mints and persists a dm:send grant, self-signed by this store's own user principal. Returns the minted token for the caller to deliver to bearerId out of band. Deliberately outside the CommsStore interface, like requestDmAccess above. Concrete-only -- reached directly by tests. delegationsRemaining defaults to 0 (non-delegable, the original behaviour); a positive value admits bearerId as a user principal capable of sub-delegating to its own devices (agent-comms#187) -- see RoomLifecycle.admitAgentForDm's own doc comment. */
453
474
  async admitAgentForDm(bearerId, delegationsRemaining = 0) {
454
475
  return this.roomLifecycle.admitAgentForDm(bearerId, delegationsRemaining);
@@ -617,6 +638,20 @@ export class MeshStore {
617
638
  listTrustedGatewayPrincipals() {
618
639
  return this.gatewayTrust.listPrincipals();
619
640
  }
641
+ /** Trusts a remote machine device-id (hex, agent-comms#343): every device whose gossiped proof that machine vouches for becomes reachable without being trusted individually. */
642
+ addTrustedGatewayMachine(deviceHex) {
643
+ this.gatewayTrust.addMachine(deviceHex);
644
+ this.reconsiderHub();
645
+ }
646
+ /** Withdraws trust from a remote machine device-id (hex), and with it every device reachable only through that machine: revoking every bridge that machine key vouches for in one act. A no-op if it was never trusted. */
647
+ removeTrustedGatewayMachine(deviceHex) {
648
+ this.gatewayTrust.removeMachine(deviceHex);
649
+ this.reconsiderHub();
650
+ }
651
+ /** Every currently trusted remote machine device-id (hex). */
652
+ listTrustedGatewayMachines() {
653
+ return this.gatewayTrust.listMachines();
654
+ }
620
655
  // -----------------------------------------------------------------------
621
656
  // Connection codes (agent-comms#188) -- bootstrapping gateway trust with no existing mesh connection between the two devices
622
657
  // -----------------------------------------------------------------------
@@ -666,21 +701,7 @@ export class MeshStore {
666
701
  return transport.meshTrace(target, timeoutMs);
667
702
  }
668
703
  getNetworkInterfaces() {
669
- const interfaces = os.networkInterfaces();
670
- const result = [];
671
- for (const [name, addrs] of Object.entries(interfaces)) {
672
- if (addrs === undefined)
673
- continue;
674
- for (const addr of addrs) {
675
- result.push({
676
- name,
677
- address: addr.address,
678
- family: addr.family,
679
- internal: addr.internal,
680
- });
681
- }
682
- }
683
- return result;
704
+ return listNetworkInterfaces();
684
705
  }
685
706
  // -----------------------------------------------------------------------
686
707
  // Peer versions (agent-comms#198) -- the cached, gossip-backed path
@@ -703,21 +724,7 @@ export class MeshStore {
703
724
  // -----------------------------------------------------------------------
704
725
  /** Asks deviceId for its own, currently-running wire-mesh-core version live, right now, rather than trusting whatever it last gossiped -- the query_version action's own backing call. Resolves to a plain, provider-neutral result rather than leaking wire-mesh-core's own ManageOutcome type up to CommsTool, which has no other reason to know that type exists. */
705
726
  async queryVersion(deviceId) {
706
- const transport = this.requireTransport();
707
- if (transport.queryVersion === undefined) {
708
- return {
709
- error: "this transport does not support querying a peer's version",
710
- };
711
- }
712
- const outcome = await transport.queryVersion(deviceId);
713
- if (outcome.result === "error") {
714
- return { error: outcome.message ?? outcome.code };
715
- }
716
- const version = outcome.version;
717
- if (typeof version !== "string") {
718
- return { error: "peer answered version.get with no version string" };
719
- }
720
- return { version };
727
+ return queryPeerVersion(this.requireTransport(), deviceId);
721
728
  }
722
729
  // -----------------------------------------------------------------------
723
730
  // Shutdown