agent-comms 2.21.6 → 2.21.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/bridges/claude-code/channel.d.ts.map +1 -1
- package/dist/bridges/claude-code/channel.js +8 -4
- package/dist/bridges/claude-code/channel.js.map +1 -1
- package/dist/bridges/codex/tool.d.ts.map +1 -1
- package/dist/bridges/codex/tool.js +5 -3
- package/dist/bridges/codex/tool.js.map +1 -1
- package/dist/bridges/mcp/{index.d.ts → server.d.ts} +1 -1
- package/dist/bridges/mcp/server.d.ts.map +1 -0
- package/dist/bridges/mcp/{index.js → server.js} +6 -4
- package/dist/bridges/mcp/server.js.map +1 -0
- package/dist/bridges/opencode/plugin.d.ts.map +1 -1
- package/dist/bridges/opencode/plugin.js +3 -1
- package/dist/bridges/opencode/plugin.js.map +1 -1
- package/dist/bridges/pi/{index.d.ts → extension.d.ts} +1 -1
- package/dist/bridges/pi/extension.d.ts.map +1 -0
- package/dist/bridges/pi/{index.js → extension.js} +12 -11
- package/dist/bridges/pi/extension.js.map +1 -0
- package/dist/bridges/{index.d.ts → registry.d.ts} +1 -1
- package/dist/bridges/registry.d.ts.map +1 -0
- package/dist/bridges/{index.js → registry.js} +2 -2
- package/dist/bridges/registry.js.map +1 -0
- package/dist/bridges/user/cli.d.ts +1 -1
- package/dist/bridges/user/cli.d.ts.map +1 -1
- package/dist/bridges/user/cli.js +3 -3
- package/dist/bridges/user/cli.js.map +1 -1
- package/dist/bridges/user/controller.d.ts +4 -4
- package/dist/bridges/user/controller.d.ts.map +1 -1
- package/dist/bridges/user/controller.js +4 -4
- package/dist/bridges/user/controller.js.map +1 -1
- package/dist/bridges/user/tui.js +13 -9
- package/dist/bridges/user/tui.js.map +1 -1
- package/dist/bridges/user/web/dist/bundle.js +2 -2
- package/dist/bridges/user/web/dist/mesh-worker.js +1 -1
- package/dist/bridges/user/web/dist/sw.js +1 -1
- package/dist/bridges/user/web/frontend/api.d.ts +1 -1
- package/dist/bridges/user/web/frontend/api.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/api.js +7 -2
- package/dist/bridges/user/web/frontend/api.js.map +1 -1
- package/dist/bridges/user/web/frontend/components/App.d.ts +3 -3
- package/dist/bridges/user/web/frontend/components/App.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/components/ChatArea.d.ts +1 -1
- package/dist/bridges/user/web/frontend/components/ChatArea.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/components/ChatArea.js +3 -2
- package/dist/bridges/user/web/frontend/components/ChatArea.js.map +1 -1
- package/dist/bridges/user/web/frontend/components/MessageList.d.ts +2 -2
- package/dist/bridges/user/web/frontend/components/MessageList.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/components/MessageList.js +1 -1
- package/dist/bridges/user/web/frontend/components/MessageList.js.map +1 -1
- package/dist/bridges/user/web/frontend/components/ProjectTree.js +1 -1
- package/dist/bridges/user/web/frontend/components/ProjectTree.js.map +1 -1
- package/dist/bridges/user/web/frontend/components/Sidebar.d.ts +2 -2
- package/dist/bridges/user/web/frontend/components/Sidebar.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/dom.d.ts +0 -3
- package/dist/bridges/user/web/frontend/dom.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/dom.js +4 -2
- package/dist/bridges/user/web/frontend/dom.js.map +1 -1
- package/dist/bridges/user/web/frontend/input.js +13 -7
- package/dist/bridges/user/web/frontend/input.js.map +1 -1
- package/dist/bridges/user/web/frontend/main.js +4 -2
- package/dist/bridges/user/web/frontend/main.js.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-client.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-client.js +23 -10
- package/dist/bridges/user/web/frontend/mesh-client.js.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-worker.js +6 -4
- package/dist/bridges/user/web/frontend/mesh-worker.js.map +1 -1
- package/dist/bridges/user/web/frontend/messages.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/messages.js +2 -0
- package/dist/bridges/user/web/frontend/messages.js.map +1 -1
- package/dist/bridges/user/web/frontend/project-tree.d.ts +1 -1
- package/dist/bridges/user/web/frontend/project-tree.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/project-tree.js.map +1 -1
- package/dist/bridges/user/web/frontend/state.d.ts +7 -7
- package/dist/bridges/user/web/frontend/state.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/state.js.map +1 -1
- package/dist/bridges/user/web/frontend/sw.js +23 -17
- package/dist/bridges/user/web/frontend/sw.js.map +1 -1
- package/dist/bridges/user/web/frontend/url-sync.d.ts +3 -3
- package/dist/bridges/user/web/frontend/url-sync.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/url-sync.js +7 -5
- package/dist/bridges/user/web/frontend/url-sync.js.map +1 -1
- package/dist/bridges/user/web/generated-html.js +1 -1
- package/dist/bridges/user/web/port-discovery.d.ts.map +1 -1
- package/dist/bridges/user/web/port-discovery.js +1 -1
- package/dist/bridges/user/web/port-discovery.js.map +1 -1
- package/dist/bridges/user/web/server.d.ts.map +1 -1
- package/dist/bridges/user/web/server.js +47 -23
- package/dist/bridges/user/web/server.js.map +1 -1
- package/dist/bridges/user/web/test/port-discovery.unit.test.js +46 -20
- package/dist/bridges/user/web/test/port-discovery.unit.test.js.map +1 -1
- package/dist/bridges/user/web/test/web-server.integration.test.js +27 -9
- package/dist/bridges/user/web/test/web-server.integration.test.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +9 -7
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-registry.js +5 -5
- package/dist/core/agent-registry.js.map +1 -1
- package/dist/core/bridge.d.ts +2 -2
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +7 -1
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/comms-store.d.ts +24 -24
- package/dist/core/comms-store.d.ts.map +1 -1
- package/dist/core/connection-approval.d.ts +4 -7
- package/dist/core/connection-approval.d.ts.map +1 -1
- package/dist/core/connection-approval.js +3 -6
- package/dist/core/connection-approval.js.map +1 -1
- package/dist/core/delivery-engine.d.ts +1 -1
- package/dist/core/delivery-engine.d.ts.map +1 -1
- package/dist/core/delivery-engine.js +8 -6
- package/dist/core/delivery-engine.js.map +1 -1
- package/dist/core/discovery-mdns.d.ts +3 -1
- package/dist/core/discovery-mdns.d.ts.map +1 -1
- package/dist/core/discovery-mdns.js +17 -10
- package/dist/core/discovery-mdns.js.map +1 -1
- package/dist/core/discovery-tailscale.d.ts +1 -1
- package/dist/core/discovery-tailscale.d.ts.map +1 -1
- package/dist/core/discovery-tailscale.js +25 -13
- package/dist/core/discovery-tailscale.js.map +1 -1
- package/dist/core/discovery.d.ts +10 -10
- package/dist/core/discovery.d.ts.map +1 -1
- package/dist/core/discovery.js +6 -8
- package/dist/core/discovery.js.map +1 -1
- package/dist/core/federation-bridge.d.ts +1 -1
- package/dist/core/federation-bridge.d.ts.map +1 -1
- package/dist/core/federation-bridge.js +4 -4
- package/dist/core/federation-bridge.js.map +1 -1
- package/dist/core/federation.d.ts +16 -16
- package/dist/core/federation.d.ts.map +1 -1
- package/dist/core/federation.js +33 -14
- package/dist/core/federation.js.map +1 -1
- package/dist/core/handshake.d.ts +10 -10
- package/dist/core/handshake.d.ts.map +1 -1
- package/dist/core/handshake.js +9 -4
- package/dist/core/handshake.js.map +1 -1
- package/dist/core/identity-store.d.ts +8 -8
- package/dist/core/identity-store.d.ts.map +1 -1
- package/dist/core/identity-store.js +7 -3
- package/dist/core/identity-store.js.map +1 -1
- package/dist/core/identity.d.ts.map +1 -1
- package/dist/core/identity.js +111 -42
- package/dist/core/identity.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/mcp-registry-retry.d.ts.map +1 -1
- package/dist/core/mcp-registry-retry.js +4 -1
- package/dist/core/mcp-registry-retry.js.map +1 -1
- package/dist/core/mesh-store-shared.d.ts +2 -5
- package/dist/core/mesh-store-shared.d.ts.map +1 -1
- package/dist/core/mesh-store-shared.js +21 -5
- package/dist/core/mesh-store-shared.js.map +1 -1
- package/dist/core/mesh-store.d.ts +3 -4
- package/dist/core/mesh-store.d.ts.map +1 -1
- package/dist/core/mesh-store.js +12 -10
- package/dist/core/mesh-store.js.map +1 -1
- package/dist/core/peer-lifecycle.d.ts +9 -9
- package/dist/core/peer-lifecycle.d.ts.map +1 -1
- package/dist/core/peer-lifecycle.js.map +1 -1
- package/dist/core/push-manager.d.ts +1 -2
- package/dist/core/push-manager.d.ts.map +1 -1
- package/dist/core/push-manager.js.map +1 -1
- package/dist/core/random-id.d.ts +1 -1
- package/dist/core/random-id.d.ts.map +1 -1
- package/dist/core/random-id.js +4 -2
- package/dist/core/random-id.js.map +1 -1
- package/dist/core/room-lifecycle.d.ts +2 -2
- package/dist/core/room-lifecycle.d.ts.map +1 -1
- package/dist/core/room-lifecycle.js +4 -3
- package/dist/core/room-lifecycle.js.map +1 -1
- package/dist/core/room-messaging.d.ts +1 -1
- package/dist/core/room-messaging.d.ts.map +1 -1
- package/dist/core/room-messaging.js +2 -2
- package/dist/core/room-messaging.js.map +1 -1
- package/dist/core/room-protocol.d.ts +1 -1
- package/dist/core/room-protocol.d.ts.map +1 -1
- package/dist/core/room-protocol.js +6 -6
- package/dist/core/room-protocol.js.map +1 -1
- package/dist/core/room-router.d.ts +3 -3
- package/dist/core/room-router.d.ts.map +1 -1
- package/dist/core/room-router.js +19 -1
- package/dist/core/room-router.js.map +1 -1
- package/dist/core/stale-agent-checker.d.ts.map +1 -1
- package/dist/core/stale-agent-checker.js +4 -1
- package/dist/core/stale-agent-checker.js.map +1 -1
- package/dist/core/store.d.ts +2 -2
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +16 -9
- package/dist/core/store.js.map +1 -1
- package/dist/core/test/identity.unit.test.js +42 -9
- package/dist/core/test/identity.unit.test.js.map +1 -1
- package/dist/core/tool.d.ts +23 -23
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +115 -174
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transport.d.ts +42 -65
- package/dist/core/transport.d.ts.map +1 -1
- package/dist/core/types.d.ts +52 -46
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +42 -25
- package/dist/core/types.js.map +1 -1
- package/dist/core/vapid.d.ts.map +1 -1
- package/dist/core/vapid.js +6 -2
- package/dist/core/vapid.js.map +1 -1
- package/dist/core/web-push.d.ts +2 -2
- package/dist/core/web-push.d.ts.map +1 -1
- package/dist/core/web-push.js +29 -11
- package/dist/core/web-push.js.map +1 -1
- package/dist/core/wire-mesh-transport.d.ts +10 -10
- package/dist/core/wire-mesh-transport.d.ts.map +1 -1
- package/dist/core/wire-mesh-transport.js +7 -5
- package/dist/core/wire-mesh-transport.js.map +1 -1
- package/dist/test/approval.integration.test.js +25 -14
- package/dist/test/approval.integration.test.js.map +1 -1
- package/dist/test/bridge-mesh.test.js +6 -1
- package/dist/test/bridge-mesh.test.js.map +1 -1
- package/dist/test/broadcast-window.integration.test.js +7 -3
- package/dist/test/broadcast-window.integration.test.js.map +1 -1
- package/dist/test/coordinator-socket-error.integration.test.js +5 -1
- package/dist/test/coordinator-socket-error.integration.test.js.map +1 -1
- package/dist/test/delivery-receipt.helper.js +56 -33
- package/dist/test/delivery-receipt.helper.js.map +1 -1
- package/dist/test/federation.integration.test.js +33 -14
- package/dist/test/federation.integration.test.js.map +1 -1
- package/dist/test/handshake.test.js +23 -7
- package/dist/test/handshake.test.js.map +1 -1
- package/dist/test/identity-restart.integration.test.js +15 -7
- package/dist/test/identity-restart.integration.test.js.map +1 -1
- package/dist/test/identity-store.test.js +14 -6
- package/dist/test/identity-store.test.js.map +1 -1
- package/dist/test/listener-policy.integration.test.js +3 -2
- package/dist/test/listener-policy.integration.test.js.map +1 -1
- package/dist/test/mcp-registry-retry.test.js +14 -3
- package/dist/test/mcp-registry-retry.test.js.map +1 -1
- package/dist/test/mesh-e2e.integration.test.js +27 -10
- package/dist/test/mesh-e2e.integration.test.js.map +1 -1
- package/dist/test/mesh-smoke.runner.js +1 -1
- package/dist/test/mesh-smoke.runner.js.map +1 -1
- package/dist/test/presence-readvertise.integration.test.d.ts +1 -1
- package/dist/test/presence-readvertise.integration.test.js +5 -2
- package/dist/test/presence-readvertise.integration.test.js.map +1 -1
- package/dist/test/random-id.test.js +3 -1
- package/dist/test/random-id.test.js.map +1 -1
- package/dist/test/room-admission-tool-actions.test.js +2 -1
- package/dist/test/room-admission-tool-actions.test.js.map +1 -1
- package/dist/test/room-destroy-revocation.integration.test.js +4 -1
- package/dist/test/room-destroy-revocation.integration.test.js.map +1 -1
- package/dist/test/room-invite-directed.integration.test.js +2 -1
- package/dist/test/room-invite-directed.integration.test.js.map +1 -1
- package/dist/test/room-join-admission.test.js +7 -5
- package/dist/test/room-join-admission.test.js.map +1 -1
- package/dist/test/room-kick-revocation.integration.test.js +5 -1
- package/dist/test/room-kick-revocation.integration.test.js.map +1 -1
- package/dist/test/room-path.test.js +3 -2
- package/dist/test/room-path.test.js.map +1 -1
- package/dist/test/room-read-directed.integration.test.js +6 -2
- package/dist/test/room-read-directed.integration.test.js.map +1 -1
- package/dist/test/room-router.test.js +3 -1
- package/dist/test/room-router.test.js.map +1 -1
- package/dist/test/room-send-directed.integration.test.js +2 -1
- package/dist/test/room-send-directed.integration.test.js.map +1 -1
- package/dist/test/room-send-retry-queue.test.js +6 -2
- package/dist/test/room-send-retry-queue.test.js.map +1 -1
- package/dist/test/room-send-retry.integration.test.js +21 -7
- package/dist/test/room-send-retry.integration.test.js.map +1 -1
- package/dist/test/room-token-store.test.js +30 -7
- package/dist/test/room-token-store.test.js.map +1 -1
- package/dist/test/state-sync-convergence.test.js +2 -1
- package/dist/test/state-sync-convergence.test.js.map +1 -1
- package/dist/test/test-transport.d.ts +1 -1
- package/dist/test/test-transport.d.ts.map +1 -1
- package/dist/test/test-transport.js +7 -3
- package/dist/test/test-transport.js.map +1 -1
- package/dist/test/wire-mesh-transport.test.js +41 -27
- package/dist/test/wire-mesh-transport.test.js.map +1 -1
- package/package.json +4 -3
- package/dist/bridges/index.d.ts.map +0 -1
- package/dist/bridges/index.js.map +0 -1
- package/dist/bridges/mcp/index.d.ts.map +0 -1
- package/dist/bridges/mcp/index.js.map +0 -1
- package/dist/bridges/pi/index.d.ts.map +0 -1
- package/dist/bridges/pi/index.js.map +0 -1
|
@@ -38,7 +38,7 @@ export class FederationBridge {
|
|
|
38
38
|
/** Called when a message arrives for a federated room -- stores it locally and delivers to all local room members. */
|
|
39
39
|
async onRoomMessage(roomId, message) {
|
|
40
40
|
const room = this.deps.rooms.get(roomId);
|
|
41
|
-
if (
|
|
41
|
+
if (room?.federated !== true)
|
|
42
42
|
return;
|
|
43
43
|
const arr = this.deps.messages.get(roomId) ?? [];
|
|
44
44
|
arr.push(message);
|
|
@@ -53,7 +53,7 @@ export class FederationBridge {
|
|
|
53
53
|
/** Called when a remote agent joins a federated room -- creates a shadow `fed:`-prefixed member and notifies local members. */
|
|
54
54
|
async onRoomJoin(roomId, agentId, _agentName) {
|
|
55
55
|
const room = this.deps.rooms.get(roomId);
|
|
56
|
-
if (
|
|
56
|
+
if (room?.federated !== true)
|
|
57
57
|
return;
|
|
58
58
|
const remoteId = `fed:${agentId}`;
|
|
59
59
|
if (!room.members.includes(remoteId)) {
|
|
@@ -71,7 +71,7 @@ export class FederationBridge {
|
|
|
71
71
|
/** Called when a remote agent leaves a federated room. */
|
|
72
72
|
async onRoomLeave(roomId, agentId) {
|
|
73
73
|
const room = this.deps.rooms.get(roomId);
|
|
74
|
-
if (
|
|
74
|
+
if (room?.federated !== true)
|
|
75
75
|
return;
|
|
76
76
|
const remoteId = `fed:${agentId}`;
|
|
77
77
|
this.deps.deliveryEngine.bump(room);
|
|
@@ -102,7 +102,7 @@ export class FederationBridge {
|
|
|
102
102
|
getFederatedRoomMemberships() {
|
|
103
103
|
const result = new Map();
|
|
104
104
|
for (const [roomId, room] of this.deps.rooms) {
|
|
105
|
-
if (room.federated) {
|
|
105
|
+
if (room.federated === true) {
|
|
106
106
|
const localMembers = room.members.filter((m) => !m.startsWith("fed:"));
|
|
107
107
|
result.set(roomId, localMembers);
|
|
108
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation-bridge.js","sourceRoot":"","sources":["../../src/core/federation-bridge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,IAA0B;QAA1B,SAAI,GAAJ,IAAI,CAAsB;IAAG,CAAC;IAE3D,+JAA+J;IAC/J,KAAK,CAAC,cAAc,CAAC,KAAoB;QACvC,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACpD,MAAM,WAAW,GAAkB;YACjC,GAAG,KAAK;YACR,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;SACnC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;YAC5C,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;IACL,CAAC;IAED,gJAAgJ;IAChJ,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,MAAM,GAAG,OAAO,OAAO,GAAG,CAAC;QACjC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACrC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;oBAC5C,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,sHAAsH;IACtH,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,OAAoB;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,
|
|
1
|
+
{"version":3,"file":"federation-bridge.js","sourceRoot":"","sources":["../../src/core/federation-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,35 +31,35 @@ export interface FedLink {
|
|
|
31
31
|
/** Callbacks the FederationManager uses to interact with local mesh state. */
|
|
32
32
|
export interface FedCallbacks {
|
|
33
33
|
/** Called when a remote agent becomes visible over a federation link. */
|
|
34
|
-
onAgentVisible(agent: AgentIdentity)
|
|
34
|
+
onAgentVisible: (agent: AgentIdentity) => Promise<void>;
|
|
35
35
|
/** Called when a remote agent goes offline/disappears. */
|
|
36
|
-
onAgentGone(agentId: string)
|
|
36
|
+
onAgentGone: (agentId: string) => Promise<void>;
|
|
37
37
|
/** Called when a message arrives for a federated room. */
|
|
38
|
-
onRoomMessage(roomId: string, message: RoomMessage)
|
|
38
|
+
onRoomMessage: (roomId: string, message: RoomMessage) => Promise<void>;
|
|
39
39
|
/** Called when a remote agent joins a federated room. */
|
|
40
|
-
onRoomJoin(roomId: string, agentId: string, agentName: string)
|
|
40
|
+
onRoomJoin: (roomId: string, agentId: string, agentName: string) => Promise<void>;
|
|
41
41
|
/** Called when a remote agent leaves a federated room. */
|
|
42
|
-
onRoomLeave(roomId: string, agentId: string)
|
|
42
|
+
onRoomLeave: (roomId: string, agentId: string) => Promise<void>;
|
|
43
43
|
/** Get all visible agents in the local mesh (for syncing to new links). */
|
|
44
|
-
getVisibleAgents()
|
|
44
|
+
getVisibleAgents: () => AgentIdentity[];
|
|
45
45
|
/** Get all federated rooms and their member lists (for syncing to new links). */
|
|
46
|
-
getFederatedRoomMemberships()
|
|
46
|
+
getFederatedRoomMemberships: () => Map<string, string[]>;
|
|
47
47
|
}
|
|
48
48
|
export declare class FederationManager {
|
|
49
|
-
private links;
|
|
50
|
-
private identity;
|
|
51
|
-
private meshId;
|
|
52
|
-
private meshName;
|
|
53
|
-
private callbacks;
|
|
54
|
-
private pingTimers;
|
|
49
|
+
private readonly links;
|
|
50
|
+
private readonly identity;
|
|
51
|
+
private readonly meshId;
|
|
52
|
+
private readonly meshName;
|
|
53
|
+
private readonly callbacks;
|
|
54
|
+
private readonly pingTimers;
|
|
55
55
|
private shutDown;
|
|
56
|
-
private pendingPongs;
|
|
56
|
+
private readonly pendingPongs;
|
|
57
57
|
/**
|
|
58
58
|
* Certificate fingerprints this instance will federate with, inbound or outbound. Empty by default — federation trusts nobody until an operator explicitly pins a remote mesh's fingerprint, the same no-CA, pin-the-key trust model ordinary peer connections already use.
|
|
59
59
|
*/
|
|
60
|
-
private trustedFingerprints;
|
|
60
|
+
private readonly trustedFingerprints;
|
|
61
61
|
private listener;
|
|
62
|
-
constructor(meshId: string, meshName: string, callbacks: FedCallbacks);
|
|
62
|
+
constructor(meshId: string, meshName: string, callbacks: Readonly<FedCallbacks>);
|
|
63
63
|
/** The TLS identity used for federation connections. */
|
|
64
64
|
get tlsIdentity(): PeerIdentity;
|
|
65
65
|
/** Pin a remote mesh's certificate fingerprint as trusted for federation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/core/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,kEAAkE;AAClE,MAAM,WAAW,OAAO;IACtB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC;IACtB,wDAAwD;IACxD,KAAK,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;CACnC;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,cAAc,CAAC,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/core/federation.ts"],"names":[],"mappings":"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"}
|
package/dist/core/federation.js
CHANGED
|
@@ -20,6 +20,14 @@ import { fingerprintDer, generateIdentity } from "./identity.js";
|
|
|
20
20
|
const FED_PING_INTERVAL_MS = 30_000;
|
|
21
21
|
const FED_PING_TIMEOUT_MS = 10_000;
|
|
22
22
|
const FED_VERSION = "1.0.0";
|
|
23
|
+
/** Length (in bytes of entropy) of a locally-assigned federation link ID. */
|
|
24
|
+
const FED_LINK_ID_LENGTH = 8;
|
|
25
|
+
/** How long to wait for the remote side to complete the fed_handshake/fed_ack exchange before giving up. */
|
|
26
|
+
const FED_HANDSHAKE_TIMEOUT_MS = 5000;
|
|
27
|
+
/** How long to wait for the underlying TLS socket itself to connect before giving up. */
|
|
28
|
+
const FED_CONNECT_TIMEOUT_MS = 5000;
|
|
29
|
+
/** How often {@link FederationManager.waitForHandshake} polls link readiness. */
|
|
30
|
+
const FED_HANDSHAKE_POLL_INTERVAL_MS = 50;
|
|
23
31
|
// ---------------------------------------------------------------------------
|
|
24
32
|
// FederationManager
|
|
25
33
|
// ---------------------------------------------------------------------------
|
|
@@ -91,7 +99,7 @@ export class FederationManager {
|
|
|
91
99
|
async connect(host, port, name) {
|
|
92
100
|
if (this.shutDown)
|
|
93
101
|
throw new Error("FederationManager is shut down");
|
|
94
|
-
const linkId = nanoid(
|
|
102
|
+
const linkId = nanoid(FED_LINK_ID_LENGTH);
|
|
95
103
|
const socket = await this.tlsConnect(host, port);
|
|
96
104
|
if (this.verifyPeerOrDestroy(socket) === undefined) {
|
|
97
105
|
throw new Error(`Federation connection to ${host}:${String(port)} rejected: ` +
|
|
@@ -118,7 +126,7 @@ export class FederationManager {
|
|
|
118
126
|
// Wire up incoming message handling
|
|
119
127
|
this.wireSocket(linkId, socket);
|
|
120
128
|
// Wait for fed_ack (with timeout)
|
|
121
|
-
await this.waitForHandshake(linkId,
|
|
129
|
+
await this.waitForHandshake(linkId, FED_HANDSHAKE_TIMEOUT_MS);
|
|
122
130
|
return linkId;
|
|
123
131
|
}
|
|
124
132
|
// -----------------------------------------------------------------------
|
|
@@ -137,7 +145,7 @@ export class FederationManager {
|
|
|
137
145
|
throw new Error("Inbound federation connection rejected: the presented certificate " +
|
|
138
146
|
"is not in the trusted-fingerprint allowlist.");
|
|
139
147
|
}
|
|
140
|
-
const linkId = nanoid(
|
|
148
|
+
const linkId = nanoid(FED_LINK_ID_LENGTH);
|
|
141
149
|
const link = {
|
|
142
150
|
id: linkId,
|
|
143
151
|
remoteMeshId: "",
|
|
@@ -149,14 +157,14 @@ export class FederationManager {
|
|
|
149
157
|
this.links.set(linkId, link);
|
|
150
158
|
this.wireSocket(linkId, socket);
|
|
151
159
|
// Wait for the remote side's handshake
|
|
152
|
-
await this.waitForHandshake(linkId,
|
|
160
|
+
await this.waitForHandshake(linkId, FED_HANDSHAKE_TIMEOUT_MS);
|
|
153
161
|
return linkId;
|
|
154
162
|
}
|
|
155
163
|
// -----------------------------------------------------------------------
|
|
156
164
|
// Link management
|
|
157
165
|
// -----------------------------------------------------------------------
|
|
158
166
|
/** Disconnect a specific federation link. */
|
|
159
|
-
disconnect(linkId) {
|
|
167
|
+
async disconnect(linkId) {
|
|
160
168
|
const link = this.links.get(linkId);
|
|
161
169
|
if (!link)
|
|
162
170
|
return Promise.resolve();
|
|
@@ -212,7 +220,7 @@ export class FederationManager {
|
|
|
212
220
|
*
|
|
213
221
|
* Previously nothing in the shipped product called `handleInbound()` at all: it existed only as a function the integration test invoked directly against a hand-rolled `tls.createServer`. This is that server, promoted to real code.
|
|
214
222
|
*/
|
|
215
|
-
listen(host, port) {
|
|
223
|
+
async listen(host, port) {
|
|
216
224
|
if (this.listener) {
|
|
217
225
|
throw new Error("FederationManager is already listening");
|
|
218
226
|
}
|
|
@@ -236,7 +244,7 @@ export class FederationManager {
|
|
|
236
244
|
});
|
|
237
245
|
}
|
|
238
246
|
/** Stop accepting new inbound federation connections. Existing links are unaffected. */
|
|
239
|
-
stopListening() {
|
|
247
|
+
async stopListening() {
|
|
240
248
|
const server = this.listener;
|
|
241
249
|
if (!server)
|
|
242
250
|
return Promise.resolve();
|
|
@@ -260,7 +268,7 @@ export class FederationManager {
|
|
|
260
268
|
// -----------------------------------------------------------------------
|
|
261
269
|
// Internal — TLS connection
|
|
262
270
|
// -----------------------------------------------------------------------
|
|
263
|
-
tlsConnect(host, port) {
|
|
271
|
+
async tlsConnect(host, port) {
|
|
264
272
|
return new Promise((resolve, reject) => {
|
|
265
273
|
const socket = tls.connect({
|
|
266
274
|
key: this.identity.privateKey,
|
|
@@ -275,7 +283,7 @@ export class FederationManager {
|
|
|
275
283
|
const timer = setTimeout(() => {
|
|
276
284
|
socket.destroy();
|
|
277
285
|
reject(new Error(`Federation connection timeout to ${host}:${String(port)}`));
|
|
278
|
-
},
|
|
286
|
+
}, FED_CONNECT_TIMEOUT_MS);
|
|
279
287
|
socket.on("error", (err) => {
|
|
280
288
|
clearTimeout(timer);
|
|
281
289
|
reject(err);
|
|
@@ -372,6 +380,17 @@ export class FederationManager {
|
|
|
372
380
|
}
|
|
373
381
|
break;
|
|
374
382
|
}
|
|
383
|
+
case "state_sync":
|
|
384
|
+
case "state_update":
|
|
385
|
+
case "introduce":
|
|
386
|
+
case "connect_request":
|
|
387
|
+
case "peer_list":
|
|
388
|
+
case "peer_joined":
|
|
389
|
+
case "peer_left":
|
|
390
|
+
case "become_coordinator": {
|
|
391
|
+
// Local-mesh-only message kinds — never sent over a federation link; ignore rather than throw so an unexpected wire message can't tear down the link.
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
375
394
|
}
|
|
376
395
|
}
|
|
377
396
|
// -----------------------------------------------------------------------
|
|
@@ -383,7 +402,7 @@ export class FederationManager {
|
|
|
383
402
|
*/
|
|
384
403
|
async syncStateToLink(linkId) {
|
|
385
404
|
const link = this.links.get(linkId);
|
|
386
|
-
if (
|
|
405
|
+
if (link?.ready !== true)
|
|
387
406
|
return;
|
|
388
407
|
// Sync visible agents
|
|
389
408
|
const agents = this.callbacks.getVisibleAgents();
|
|
@@ -412,12 +431,12 @@ export class FederationManager {
|
|
|
412
431
|
// -----------------------------------------------------------------------
|
|
413
432
|
// Internal — handshake waiting
|
|
414
433
|
// -----------------------------------------------------------------------
|
|
415
|
-
waitForHandshake(linkId, timeoutMs) {
|
|
434
|
+
async waitForHandshake(linkId, timeoutMs) {
|
|
416
435
|
return new Promise((resolve, reject) => {
|
|
417
436
|
const startTime = Date.now();
|
|
418
437
|
const check = () => {
|
|
419
438
|
const link = this.links.get(linkId);
|
|
420
|
-
if (link?.ready) {
|
|
439
|
+
if (link?.ready === true) {
|
|
421
440
|
resolve();
|
|
422
441
|
return;
|
|
423
442
|
}
|
|
@@ -426,7 +445,7 @@ export class FederationManager {
|
|
|
426
445
|
reject(new Error(`Federation handshake timeout for link ${linkId}`));
|
|
427
446
|
return;
|
|
428
447
|
}
|
|
429
|
-
setTimeout(check,
|
|
448
|
+
setTimeout(check, FED_HANDSHAKE_POLL_INTERVAL_MS);
|
|
430
449
|
};
|
|
431
450
|
check();
|
|
432
451
|
});
|
|
@@ -444,7 +463,7 @@ export class FederationManager {
|
|
|
444
463
|
}
|
|
445
464
|
async sendPing(linkId) {
|
|
446
465
|
const link = this.links.get(linkId);
|
|
447
|
-
if (
|
|
466
|
+
if (link?.ready !== true)
|
|
448
467
|
return;
|
|
449
468
|
const msg = { method: "fed_ping" };
|
|
450
469
|
await this.writeToSocket(link.socket, msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/core/federation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/core/federation.ts"],"names":[],"mappings":"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"}
|
package/dist/core/handshake.d.ts
CHANGED
|
@@ -36,12 +36,12 @@ export type HandshakeOutcome = {
|
|
|
36
36
|
reason: string;
|
|
37
37
|
};
|
|
38
38
|
/**
|
|
39
|
-
* Per-connection gate fed the incoming byte stream. Consumes the (optional) leading handshake frame and classifies the connection: negotiated (a version was agreed — for a server, the caller replies with `encodeHandshakeFrame()`), legacy (first byte was
|
|
39
|
+
* Per-connection gate fed the incoming byte stream. Consumes the (optional) leading handshake frame and classifies the connection: negotiated (a version was agreed — for a server, the caller replies with `encodeHandshakeFrame()`), legacy (first byte was the JSON object-start byte — a pre-handshake peer, proceed exactly as before), or refused (a handshake we cannot speak: destroy the connection loudly rather than desync — the #31 enforcement point). After the first classification every subsequent feed passes the bytes through unchanged.
|
|
40
40
|
*/
|
|
41
41
|
export declare class ConnectionHandshake {
|
|
42
42
|
private readonly role;
|
|
43
43
|
private decided;
|
|
44
|
-
private pending;
|
|
44
|
+
private readonly pending;
|
|
45
45
|
private pendingLength;
|
|
46
46
|
constructor(role: "client" | "server");
|
|
47
47
|
feed(data: Buffer): HandshakeOutcome;
|
|
@@ -52,9 +52,9 @@ export declare class ConnectionHandshake {
|
|
|
52
52
|
}
|
|
53
53
|
/** The slice of the Node socket surface the handshake needs — satisfied by net.Socket and tls.TLSSocket alike. */
|
|
54
54
|
export interface HandshakeSocket {
|
|
55
|
-
write(data: Uint8Array | string)
|
|
56
|
-
destroy()
|
|
57
|
-
on(event: "data", listener: (data: Buffer) => void)
|
|
55
|
+
write: (data: Uint8Array | string) => unknown;
|
|
56
|
+
destroy: () => void;
|
|
57
|
+
on: (event: "data", listener: (data: Buffer) => void) => unknown;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Wires a connection's handshake: a client sends its frame immediately (and
|
|
@@ -65,7 +65,7 @@ export interface HandshakeSocket {
|
|
|
65
65
|
* destroys the connection and reports the reason — the loud #31 refusal
|
|
66
66
|
* replacing silent desync.
|
|
67
67
|
*/
|
|
68
|
-
export declare function attachSocketHandshake(socket: HandshakeSocket
|
|
68
|
+
export declare function attachSocketHandshake(socket: Readonly<HandshakeSocket>, role: "client" | "server", onPayload: (data: Buffer) => void, onError?: (error: Error) => void): void;
|
|
69
69
|
/**
|
|
70
70
|
* Gate for a WebSocket connection, where every message is already framed: a
|
|
71
71
|
* binary first message is the peer's handshake frame (reply in kind via
|
|
@@ -85,9 +85,9 @@ export declare class WsHandshakeGate {
|
|
|
85
85
|
}
|
|
86
86
|
/** The slice of the WebSocket surface the handshake needs. */
|
|
87
87
|
export interface HandshakeWs {
|
|
88
|
-
send(data: string | Uint8Array)
|
|
89
|
-
terminate()
|
|
90
|
-
on(event: "message", listener: (raw: unknown, isBinary: boolean) => void)
|
|
88
|
+
send: (data: string | Uint8Array) => unknown;
|
|
89
|
+
terminate: () => void;
|
|
90
|
+
on: (event: "message", listener: (raw: unknown, isBinary: boolean) => void) => unknown;
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
93
|
* Wires a WebSocket connection's handshake: a client sends its frame as a
|
|
@@ -96,6 +96,6 @@ export interface HandshakeWs {
|
|
|
96
96
|
* messages flow to `onText` unchanged; a refused handshake terminates the
|
|
97
97
|
* connection and reports the reason.
|
|
98
98
|
*/
|
|
99
|
-
export declare function attachWsHandshake(ws: HandshakeWs
|
|
99
|
+
export declare function attachWsHandshake(ws: Readonly<HandshakeWs>, role: "client" | "server", onText: (raw: unknown) => void, onError?: (error: Error) => void): void;
|
|
100
100
|
export {};
|
|
101
101
|
//# sourceMappingURL=handshake.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/core/handshake.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,6GAA6G;AAC7G,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/core/handshake.ts"],"names":[],"mappings":"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"}
|
package/dist/core/handshake.js
CHANGED
|
@@ -15,11 +15,16 @@ export const MESH_PROTOCOL_VERSION = 1;
|
|
|
15
15
|
export const AGENT_COMMS_DOMAIN = "dev.exadev.agent-comms/mesh";
|
|
16
16
|
/** Handshake frames are tiny; anything larger than this is not a frame, it is garbage. */
|
|
17
17
|
const MAX_HANDSHAKE_BYTES = 1024;
|
|
18
|
-
/** CBOR map head byte
|
|
18
|
+
/** CBOR map head first byte, inclusive. */
|
|
19
|
+
const CBOR_MAP_HEAD_MIN = 0xa0;
|
|
20
|
+
/** CBOR map head last byte, inclusive. */
|
|
21
|
+
const CBOR_MAP_HEAD_MAX = 0xbf;
|
|
22
|
+
/** CBOR map head byte range (0xa0-0xbf); JSON always starts with the byte 0x7b. */
|
|
19
23
|
function isCborMapHead(byte) {
|
|
20
|
-
return byte >=
|
|
24
|
+
return byte >= CBOR_MAP_HEAD_MIN && byte <= CBOR_MAP_HEAD_MAX;
|
|
21
25
|
}
|
|
22
26
|
const JSON_OBJECT_START = 0x7b; // '{'
|
|
27
|
+
const HEX_RADIX = 16;
|
|
23
28
|
/**
|
|
24
29
|
* Narrow structural check for a received handshake frame.
|
|
25
30
|
*
|
|
@@ -52,7 +57,7 @@ export function negotiateMeshProtocol(remote) {
|
|
|
52
57
|
return negotiate(localFrame(), remote);
|
|
53
58
|
}
|
|
54
59
|
/**
|
|
55
|
-
* Per-connection gate fed the incoming byte stream. Consumes the (optional) leading handshake frame and classifies the connection: negotiated (a version was agreed — for a server, the caller replies with `encodeHandshakeFrame()`), legacy (first byte was
|
|
60
|
+
* Per-connection gate fed the incoming byte stream. Consumes the (optional) leading handshake frame and classifies the connection: negotiated (a version was agreed — for a server, the caller replies with `encodeHandshakeFrame()`), legacy (first byte was the JSON object-start byte — a pre-handshake peer, proceed exactly as before), or refused (a handshake we cannot speak: destroy the connection loudly rather than desync — the #31 enforcement point). After the first classification every subsequent feed passes the bytes through unchanged.
|
|
56
61
|
*/
|
|
57
62
|
export class ConnectionHandshake {
|
|
58
63
|
role;
|
|
@@ -86,7 +91,7 @@ export class ConnectionHandshake {
|
|
|
86
91
|
if (!isCborMapHead(first)) {
|
|
87
92
|
return {
|
|
88
93
|
kind: "refused",
|
|
89
|
-
reason: `unexpected first byte 0x${first.toString(
|
|
94
|
+
reason: `unexpected first byte 0x${first.toString(HEX_RADIX)} — not a handshake frame or JSON message`,
|
|
90
95
|
};
|
|
91
96
|
}
|
|
92
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/core/handshake.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,EACd,MAAM,IAAI,UAAU,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,OAAO,CAAC;AACf,OAAO,EACL,SAAS,GAEV,MAAM,iCAAiC,CAAC;AAEzC,6GAA6G;AAC7G,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAEhE,0FAA0F;AAC1F,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,
|
|
1
|
+
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/core/handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,29 +17,29 @@ export interface IdentitySlot {
|
|
|
17
17
|
/**
|
|
18
18
|
* Load the persisted identity for the slot, creating it on first use, and take the slot lock. Returns an ephemeral identity when the slot is already held by another live process.
|
|
19
19
|
*/
|
|
20
|
-
export declare function loadOrCreateIdentity(slot: IdentitySlot): PeerIdentity;
|
|
20
|
+
export declare function loadOrCreateIdentity(slot: Readonly<IdentitySlot>): PeerIdentity;
|
|
21
21
|
/**
|
|
22
22
|
* Release the slot lock on graceful shutdown. A lock held by another PID (taken over after this process crashed and restarted) is left alone.
|
|
23
23
|
*/
|
|
24
|
-
export declare function releaseIdentityLock(slot: IdentitySlot): void;
|
|
24
|
+
export declare function releaseIdentityLock(slot: Readonly<IdentitySlot>): void;
|
|
25
25
|
/**
|
|
26
26
|
* Every room-membership capability token persisted for this slot, keyed by room path. Empty if the slot has never had one saved (or the identity file doesn't exist yet -- call loadOrCreateIdentity first).
|
|
27
27
|
*/
|
|
28
|
-
export declare function loadRoomTokens(slot: IdentitySlot): Record<string, CapabilityToken>;
|
|
28
|
+
export declare function loadRoomTokens(slot: Readonly<IdentitySlot>): Record<string, CapabilityToken>;
|
|
29
29
|
/**
|
|
30
30
|
* Persists a capability token for the given room path, surviving a restart the same way the identity it was minted against does. Overwrites any token already saved for that room; leaves every other room's token and the identity's own key material untouched.
|
|
31
31
|
*/
|
|
32
|
-
export declare function saveRoomToken(slot: IdentitySlot
|
|
32
|
+
export declare function saveRoomToken(slot: Readonly<IdentitySlot>, roomPath: string, token: CapabilityToken): void;
|
|
33
33
|
/** Removes the persisted token for one room path, if any. A no-op if none was saved for that path. */
|
|
34
|
-
export declare function deleteRoomToken(slot: IdentitySlot
|
|
34
|
+
export declare function deleteRoomToken(slot: Readonly<IdentitySlot>, roomPath: string): void;
|
|
35
35
|
/**
|
|
36
36
|
* The token-id this identity itself minted for the given member's room:member grant, or undefined if none is on record (the slot has never admitted this member, or the record predates this bookkeeping). A room owner consults this to revoke a specific member's own grant later -- a token-id, unlike the token itself, is never presented on the wire and so is never obtainable except from this identity's own memory of having minted it.
|
|
37
37
|
*/
|
|
38
|
-
export declare function loadIssuedRoomGrant(slot: IdentitySlot
|
|
38
|
+
export declare function loadIssuedRoomGrant(slot: Readonly<IdentitySlot>, roomPath: string, memberDeviceHex: string): Uint8Array<ArrayBuffer> | undefined;
|
|
39
39
|
/**
|
|
40
40
|
* Records the token-id of a room:member grant this identity has just minted for memberDeviceHex in roomPath, surviving a restart the same way roomTokens does. Overwrites any earlier record for the same (roomPath, member) pair -- a fresh join/invite always supersedes the grant it replaces, so only the current token-id is ever worth revoking.
|
|
41
41
|
*/
|
|
42
|
-
export declare function saveIssuedRoomGrant(slot: IdentitySlot
|
|
42
|
+
export declare function saveIssuedRoomGrant(slot: Readonly<IdentitySlot>, roomPath: string, memberDeviceHex: string, tokenId: Uint8Array): void;
|
|
43
43
|
/** Removes the recorded token-id for one (roomPath, member) grant, if any -- called once a kick has revoked it, so a later re-join mints and records a genuinely fresh one rather than leaving a stale entry alongside it. A no-op if none was recorded. */
|
|
44
|
-
export declare function deleteIssuedRoomGrant(slot: IdentitySlot
|
|
44
|
+
export declare function deleteIssuedRoomGrant(slot: Readonly<IdentitySlot>, roomPath: string, memberDeviceHex: string): void;
|
|
45
45
|
//# sourceMappingURL=identity-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-store.d.ts","sourceRoot":"","sources":["../../src/core/identity-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAQzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"identity-store.d.ts","sourceRoot":"","sources":["../../src/core/identity-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAQzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAwKD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC3B,YAAY,CAgBd;AAkDD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAKtE;AAuBD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CASjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,eAAe,GACrB,IAAI,CAaN;AAED,sGAAsG;AACtG,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,QAAQ,EAAE,MAAM,GACf,IAAI,CAUN;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,CAQrC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,UAAU,GAClB,IAAI,CAcN;AAED,4PAA4P;AAC5P,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,IAAI,CASN"}
|
|
@@ -9,10 +9,14 @@ import * as fs from "node:fs";
|
|
|
9
9
|
import * as os from "node:os";
|
|
10
10
|
import * as path from "node:path";
|
|
11
11
|
import { generateIdentity, certifyKeyPair, getCertificateFingerprint, deriveDeviceId, CERTIFICATE_VALIDITY_MS, } from "./identity.js";
|
|
12
|
+
/** Renewal margin is one twelfth of the certificate's total validity period. */
|
|
13
|
+
const RENEWAL_MARGIN_FRACTION = 12;
|
|
12
14
|
/** Renew during the final twelfth of the certificate's validity. */
|
|
13
|
-
const RENEWAL_MARGIN_MS = CERTIFICATE_VALIDITY_MS /
|
|
15
|
+
const RENEWAL_MARGIN_MS = CERTIFICATE_VALIDITY_MS / RENEWAL_MARGIN_FRACTION;
|
|
16
|
+
/** A COSE_Sign1 tuple always has exactly 4 elements: protected header, unprotected header, payload, signature. */
|
|
17
|
+
const COSE_SIGN1_TUPLE_LENGTH = 4;
|
|
14
18
|
function isSerializedCapabilityToken(value) {
|
|
15
|
-
if (!Array.isArray(value) || value.length !==
|
|
19
|
+
if (!Array.isArray(value) || value.length !== COSE_SIGN1_TUPLE_LENGTH)
|
|
16
20
|
return false;
|
|
17
21
|
const protectedHeader = value[0];
|
|
18
22
|
const unprotectedHeader = value[1];
|
|
@@ -256,7 +260,7 @@ export function deleteRoomToken(slot, roomPath) {
|
|
|
256
260
|
const stored = readStoredIdentity(identityFile);
|
|
257
261
|
if (stored?.roomTokens === undefined)
|
|
258
262
|
return;
|
|
259
|
-
const roomTokens = Object.fromEntries(Object.entries(stored.roomTokens).filter(([
|
|
263
|
+
const roomTokens = Object.fromEntries(Object.entries(stored.roomTokens).filter(([storedRoomPath]) => storedRoomPath !== roomPath));
|
|
260
264
|
writeStoredIdentity(identityFile, { ...stored, roomTokens });
|
|
261
265
|
}
|
|
262
266
|
function issuedGrantKey(roomPath, memberDeviceHex) {
|