agent-comms 9.0.10 → 9.0.12
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 +10 -6
- package/dist/account-cli.d.ts.map +1 -1
- package/dist/account-cli.js +4 -1
- package/dist/account-cli.js.map +1 -1
- package/dist/bridges/user/web/dist/mesh-worker.js +4 -4
- package/dist/bridges/user/web/dist/sw.js +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli-main.js +9 -12
- package/dist/cli-main.js.map +1 -1
- package/dist/core/account-bundle.d.ts +1 -1
- package/dist/core/account-bundle.d.ts.map +1 -1
- package/dist/core/account-bundle.js +26 -19
- package/dist/core/account-bundle.js.map +1 -1
- package/dist/core/account-join.d.ts.map +1 -1
- package/dist/core/account-join.js +5 -2
- package/dist/core/account-join.js.map +1 -1
- package/dist/core/account-ledger-crypto.d.ts.map +1 -1
- package/dist/core/account-ledger-crypto.js +4 -1
- package/dist/core/account-ledger-crypto.js.map +1 -1
- package/dist/core/account-ledger-store.d.ts +3 -1
- package/dist/core/account-ledger-store.d.ts.map +1 -1
- package/dist/core/account-ledger-store.js +6 -3
- package/dist/core/account-ledger-store.js.map +1 -1
- package/dist/core/account-ledger.d.ts +51 -4
- package/dist/core/account-ledger.d.ts.map +1 -1
- package/dist/core/account-ledger.js +102 -15
- package/dist/core/account-ledger.js.map +1 -1
- package/dist/core/bridge-mesh.d.ts.map +1 -1
- package/dist/core/bridge-mesh.js +3 -0
- package/dist/core/bridge-mesh.js.map +1 -1
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +16 -4
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/capability-ask.d.ts.map +1 -1
- package/dist/core/capability-ask.js +10 -2
- package/dist/core/capability-ask.js.map +1 -1
- package/dist/core/connection-code-tool.d.ts +1 -1
- package/dist/core/connection-code-tool.js +2 -2
- package/dist/core/connection-code-tool.js.map +1 -1
- package/dist/core/connection-code.d.ts +5 -5
- package/dist/core/connection-code.d.ts.map +1 -1
- package/dist/core/connection-code.js +22 -6
- package/dist/core/connection-code.js.map +1 -1
- package/dist/core/device-membership.d.ts +8 -3
- package/dist/core/device-membership.d.ts.map +1 -1
- package/dist/core/device-membership.js +4 -4
- package/dist/core/device-membership.js.map +1 -1
- package/dist/core/dm-grant-actions.d.ts.map +1 -1
- package/dist/core/dm-grant-actions.js +7 -1
- package/dist/core/dm-grant-actions.js.map +1 -1
- package/dist/core/error-reporting.d.ts.map +1 -1
- package/dist/core/error-reporting.js +5 -0
- package/dist/core/error-reporting.js.map +1 -1
- package/dist/core/gateway-trust.d.ts +1 -1
- package/dist/core/gateway-trust.d.ts.map +1 -1
- package/dist/core/gateway-trust.js +4 -4
- package/dist/core/gateway-trust.js.map +1 -1
- package/dist/core/group-proofs.d.ts.map +1 -1
- package/dist/core/group-proofs.js +2 -2
- package/dist/core/group-proofs.js.map +1 -1
- package/dist/core/identity-store.d.ts +13 -9
- package/dist/core/identity-store.d.ts.map +1 -1
- package/dist/core/identity-store.js +122 -147
- package/dist/core/identity-store.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/iso-timestamp.d.ts +10 -0
- package/dist/core/iso-timestamp.d.ts.map +1 -0
- package/dist/core/iso-timestamp.js +19 -0
- package/dist/core/iso-timestamp.js.map +1 -0
- package/dist/core/issuer-identity-file.d.ts +15 -0
- package/dist/core/issuer-identity-file.d.ts.map +1 -1
- package/dist/core/issuer-identity-file.js +69 -20
- package/dist/core/issuer-identity-file.js.map +1 -1
- package/dist/core/machine-identity.d.ts +1 -1
- package/dist/core/machine-identity.d.ts.map +1 -1
- package/dist/core/machine-identity.js +14 -11
- package/dist/core/machine-identity.js.map +1 -1
- package/dist/core/mesh-store.d.ts +2 -2
- package/dist/core/mesh-store.d.ts.map +1 -1
- package/dist/core/mesh-store.js.map +1 -1
- package/dist/core/peer-lifecycle.d.ts.map +1 -1
- package/dist/core/peer-lifecycle.js +8 -2
- package/dist/core/peer-lifecycle.js.map +1 -1
- package/dist/core/pid-lock-file.d.ts +27 -4
- package/dist/core/pid-lock-file.d.ts.map +1 -1
- package/dist/core/pid-lock-file.js +120 -11
- package/dist/core/pid-lock-file.js.map +1 -1
- package/dist/core/process-start.d.ts +10 -0
- package/dist/core/process-start.d.ts.map +1 -0
- package/dist/core/process-start.js +43 -0
- package/dist/core/process-start.js.map +1 -0
- package/dist/core/room-lifecycle.d.ts +3 -2
- package/dist/core/room-lifecycle.d.ts.map +1 -1
- package/dist/core/room-lifecycle.js +9 -8
- package/dist/core/room-lifecycle.js.map +1 -1
- package/dist/core/room-protocol.d.ts.map +1 -1
- package/dist/core/room-protocol.js +25 -3
- package/dist/core/room-protocol.js.map +1 -1
- package/dist/core/stale-agent-checker.d.ts.map +1 -1
- package/dist/core/stale-agent-checker.js +3 -1
- package/dist/core/stale-agent-checker.js.map +1 -1
- package/dist/core/store.d.ts +3 -0
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +42 -20
- package/dist/core/store.js.map +1 -1
- package/dist/core/tool.d.ts +5 -1
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +7 -1
- package/dist/core/tool.js.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +8 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-identity.d.ts +5 -5
- package/dist/core/user-identity.d.ts.map +1 -1
- package/dist/core/user-identity.js +59 -45
- package/dist/core/user-identity.js.map +1 -1
- package/package.json +9 -4
- package/src/account-cli.ts +4 -1
- package/src/bridges/user/web/dist/mesh-worker.js +4 -4
- package/src/bridges/user/web/dist/sw.js +1 -1
- package/src/cli-main.ts +10 -12
- package/src/core/account-bundle.ts +36 -25
- package/src/core/account-join.ts +5 -2
- package/src/core/account-ledger-crypto.ts +4 -1
- package/src/core/account-ledger-store.ts +11 -3
- package/src/core/account-ledger.ts +142 -20
- package/src/core/bridge-mesh.ts +4 -0
- package/src/core/bridge.ts +24 -4
- package/src/core/capability-ask.ts +16 -1
- package/src/core/connection-code-tool.ts +2 -2
- package/src/core/connection-code.ts +34 -8
- package/src/core/device-membership.ts +12 -8
- package/src/core/dm-grant-actions.ts +7 -1
- package/src/core/error-reporting.ts +5 -0
- package/src/core/gateway-trust.ts +4 -4
- package/src/core/group-proofs.ts +5 -2
- package/src/core/identity-store.ts +182 -191
- package/src/core/index.ts +1 -0
- package/src/core/iso-timestamp.ts +21 -0
- package/src/core/issuer-identity-file.ts +87 -23
- package/src/core/machine-identity.ts +15 -12
- package/src/core/mesh-store.ts +2 -1
- package/src/core/peer-lifecycle.ts +9 -4
- package/src/core/pid-lock-file.ts +139 -11
- package/src/core/process-start.ts +45 -0
- package/src/core/room-lifecycle.ts +12 -9
- package/src/core/room-protocol.ts +23 -3
- package/src/core/stale-agent-checker.ts +3 -1
- package/src/core/store.ts +48 -23
- package/src/core/tool.ts +14 -1
- package/src/core/types.ts +9 -3
- package/src/core/user-identity.ts +65 -51
- package/dist/bridges/user/web/frontend/boot-logic.d.ts +0 -18
- package/dist/bridges/user/web/frontend/boot-logic.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/boot-logic.js +0 -20
- package/dist/bridges/user/web/frontend/boot-logic.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/App.d.ts +0 -26
- package/dist/bridges/user/web/frontend/components/App.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/App.js +0 -25
- package/dist/bridges/user/web/frontend/components/App.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/ChatArea.d.ts +0 -19
- package/dist/bridges/user/web/frontend/components/ChatArea.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/ChatArea.js +0 -32
- package/dist/bridges/user/web/frontend/components/ChatArea.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.d.ts +0 -11
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.js +0 -39
- package/dist/bridges/user/web/frontend/components/CreateRoomForm.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/JoinForm.d.ts +0 -11
- package/dist/bridges/user/web/frontend/components/JoinForm.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/JoinForm.js +0 -12
- package/dist/bridges/user/web/frontend/components/JoinForm.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/MeshGraphView.d.ts +0 -16
- package/dist/bridges/user/web/frontend/components/MeshGraphView.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/MeshGraphView.js +0 -56
- package/dist/bridges/user/web/frontend/components/MeshGraphView.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/MeshPanel.d.ts +0 -13
- package/dist/bridges/user/web/frontend/components/MeshPanel.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/MeshPanel.js +0 -36
- package/dist/bridges/user/web/frontend/components/MeshPanel.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/MeshTraceView.d.ts +0 -20
- package/dist/bridges/user/web/frontend/components/MeshTraceView.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/MeshTraceView.js +0 -27
- package/dist/bridges/user/web/frontend/components/MeshTraceView.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/Message.d.ts +0 -8
- package/dist/bridges/user/web/frontend/components/Message.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/Message.js +0 -19
- package/dist/bridges/user/web/frontend/components/Message.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/MessageList.d.ts +0 -8
- package/dist/bridges/user/web/frontend/components/MessageList.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/MessageList.js +0 -18
- package/dist/bridges/user/web/frontend/components/MessageList.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/ProjectTree.d.ts +0 -16
- package/dist/bridges/user/web/frontend/components/ProjectTree.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/ProjectTree.js +0 -78
- package/dist/bridges/user/web/frontend/components/ProjectTree.js.map +0 -1
- package/dist/bridges/user/web/frontend/components/Sidebar.d.ts +0 -19
- package/dist/bridges/user/web/frontend/components/Sidebar.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/components/Sidebar.js +0 -39
- package/dist/bridges/user/web/frontend/components/Sidebar.js.map +0 -1
- package/dist/bridges/user/web/frontend/dispatch-action.d.ts +0 -10
- package/dist/bridges/user/web/frontend/dispatch-action.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/dispatch-action.js +0 -62
- package/dist/bridges/user/web/frontend/dispatch-action.js.map +0 -1
- package/dist/bridges/user/web/frontend/event-pump.d.ts +0 -24
- package/dist/bridges/user/web/frontend/event-pump.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/event-pump.js +0 -91
- package/dist/bridges/user/web/frontend/event-pump.js.map +0 -1
- package/dist/bridges/user/web/frontend/input.d.ts +0 -37
- package/dist/bridges/user/web/frontend/input.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/input.js +0 -173
- package/dist/bridges/user/web/frontend/input.js.map +0 -1
- package/dist/bridges/user/web/frontend/main.d.ts +0 -7
- package/dist/bridges/user/web/frontend/main.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/main.js +0 -203
- package/dist/bridges/user/web/frontend/main.js.map +0 -1
- package/dist/bridges/user/web/frontend/mesh-client.d.ts +0 -86
- package/dist/bridges/user/web/frontend/mesh-client.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/mesh-client.js +0 -274
- package/dist/bridges/user/web/frontend/mesh-client.js.map +0 -1
- package/dist/bridges/user/web/frontend/mesh-invalidation.d.ts +0 -11
- package/dist/bridges/user/web/frontend/mesh-invalidation.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/mesh-invalidation.js +0 -26
- package/dist/bridges/user/web/frontend/mesh-invalidation.js.map +0 -1
- package/dist/bridges/user/web/frontend/mesh-worker.d.ts +0 -129
- package/dist/bridges/user/web/frontend/mesh-worker.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/mesh-worker.js +0 -344
- package/dist/bridges/user/web/frontend/mesh-worker.js.map +0 -1
- package/dist/bridges/user/web/frontend/messages.d.ts +0 -18
- package/dist/bridges/user/web/frontend/messages.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/messages.js +0 -91
- package/dist/bridges/user/web/frontend/messages.js.map +0 -1
- package/dist/bridges/user/web/frontend/project-tree.d.ts +0 -9
- package/dist/bridges/user/web/frontend/project-tree.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/project-tree.js +0 -174
- package/dist/bridges/user/web/frontend/project-tree.js.map +0 -1
- package/dist/bridges/user/web/frontend/served-by-bridge.d.ts +0 -10
- package/dist/bridges/user/web/frontend/served-by-bridge.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/served-by-bridge.js +0 -10
- package/dist/bridges/user/web/frontend/served-by-bridge.js.map +0 -1
- package/dist/bridges/user/web/frontend/state.d.ts +0 -39
- package/dist/bridges/user/web/frontend/state.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/state.js +0 -82
- package/dist/bridges/user/web/frontend/state.js.map +0 -1
- package/dist/bridges/user/web/frontend/sw.d.ts +0 -13
- package/dist/bridges/user/web/frontend/sw.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/sw.js +0 -91
- package/dist/bridges/user/web/frontend/sw.js.map +0 -1
- package/dist/bridges/user/web/frontend/tab-contract.d.ts +0 -802
- package/dist/bridges/user/web/frontend/tab-contract.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/tab-contract.js +0 -13
- package/dist/bridges/user/web/frontend/tab-contract.js.map +0 -1
- package/dist/bridges/user/web/frontend/theme.d.ts +0 -154
- package/dist/bridges/user/web/frontend/theme.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/theme.js +0 -36
- package/dist/bridges/user/web/frontend/theme.js.map +0 -1
- package/dist/bridges/user/web/frontend/types.d.ts +0 -189
- package/dist/bridges/user/web/frontend/types.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/types.js +0 -7
- package/dist/bridges/user/web/frontend/types.js.map +0 -1
- package/dist/bridges/user/web/frontend/url-sync.d.ts +0 -48
- package/dist/bridges/user/web/frontend/url-sync.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/url-sync.js +0 -76
- package/dist/bridges/user/web/frontend/url-sync.js.map +0 -1
- package/dist/bridges/user/web/frontend/use-client-state.d.ts +0 -6
- package/dist/bridges/user/web/frontend/use-client-state.d.ts.map +0 -1
- package/dist/bridges/user/web/frontend/use-client-state.js +0 -8
- package/dist/bridges/user/web/frontend/use-client-state.js.map +0 -1
- package/dist/bridges/user/web/test/bridge-port-range.integration.test.d.ts +0 -2
- package/dist/bridges/user/web/test/bridge-port-range.integration.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/bridge-port-range.integration.test.js +0 -281
- package/dist/bridges/user/web/test/bridge-port-range.integration.test.js.map +0 -1
- package/dist/bridges/user/web/test/bridge-web-server.helper.d.ts +0 -13
- package/dist/bridges/user/web/test/bridge-web-server.helper.d.ts.map +0 -1
- package/dist/bridges/user/web/test/bridge-web-server.helper.js +0 -46
- package/dist/bridges/user/web/test/bridge-web-server.helper.js.map +0 -1
- package/dist/bridges/user/web/test/bridge-web-server.integration.test.d.ts +0 -2
- package/dist/bridges/user/web/test/bridge-web-server.integration.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/bridge-web-server.integration.test.js +0 -49
- package/dist/bridges/user/web/test/bridge-web-server.integration.test.js.map +0 -1
- package/dist/bridges/user/web/test/contract.unit.test.d.ts +0 -2
- package/dist/bridges/user/web/test/contract.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/contract.unit.test.js +0 -56
- package/dist/bridges/user/web/test/contract.unit.test.js.map +0 -1
- package/dist/bridges/user/web/test/event-publisher.unit.test.d.ts +0 -2
- package/dist/bridges/user/web/test/event-publisher.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/event-publisher.unit.test.js +0 -245
- package/dist/bridges/user/web/test/event-publisher.unit.test.js.map +0 -1
- package/dist/bridges/user/web/test/lan-web-server.integration.test.d.ts +0 -7
- package/dist/bridges/user/web/test/lan-web-server.integration.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/lan-web-server.integration.test.js +0 -275
- package/dist/bridges/user/web/test/lan-web-server.integration.test.js.map +0 -1
- package/dist/bridges/user/web/test/orpc-router.integration.test.d.ts +0 -7
- package/dist/bridges/user/web/test/orpc-router.integration.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/orpc-router.integration.test.js +0 -264
- package/dist/bridges/user/web/test/orpc-router.integration.test.js.map +0 -1
- package/dist/bridges/user/web/test/web-access.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/test/web-access.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/web-access.unit.test.js +0 -40
- package/dist/bridges/user/web/test/web-access.unit.test.js.map +0 -1
- package/dist/bridges/user/web/test/web-assets.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/test/web-assets.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/web-assets.unit.test.js +0 -90
- package/dist/bridges/user/web/test/web-assets.unit.test.js.map +0 -1
- package/dist/bridges/user/web/test/web-beacon.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/test/web-beacon.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/web-beacon.unit.test.js +0 -40
- package/dist/bridges/user/web/test/web-beacon.unit.test.js.map +0 -1
- package/dist/bridges/user/web/test/web-console-route.integration.test.d.ts +0 -5
- package/dist/bridges/user/web/test/web-console-route.integration.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/web-console-route.integration.test.js +0 -112
- package/dist/bridges/user/web/test/web-console-route.integration.test.js.map +0 -1
- package/dist/bridges/user/web/test/web-console-static.unit.test.d.ts +0 -5
- package/dist/bridges/user/web/test/web-console-static.unit.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/web-console-static.unit.test.js +0 -135
- package/dist/bridges/user/web/test/web-console-static.unit.test.js.map +0 -1
- package/dist/bridges/user/web/test/web-server-unbuilt-frontend.integration.test.d.ts +0 -2
- package/dist/bridges/user/web/test/web-server-unbuilt-frontend.integration.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/web-server-unbuilt-frontend.integration.test.js +0 -77
- package/dist/bridges/user/web/test/web-server-unbuilt-frontend.integration.test.js.map +0 -1
- package/dist/bridges/user/web/test/web-server.integration.test.d.ts +0 -7
- package/dist/bridges/user/web/test/web-server.integration.test.d.ts.map +0 -1
- package/dist/bridges/user/web/test/web-server.integration.test.js +0 -266
- package/dist/bridges/user/web/test/web-server.integration.test.js.map +0 -1
- package/dist/bridges/user/web/vite.config.d.ts +0 -10
- package/dist/bridges/user/web/vite.config.d.ts.map +0 -1
- package/dist/bridges/user/web/vite.config.js +0 -68
- package/dist/bridges/user/web/vite.config.js.map +0 -1
- package/dist/core/test/build-action.unit.test.d.ts +0 -2
- package/dist/core/test/build-action.unit.test.d.ts.map +0 -1
- package/dist/core/test/build-action.unit.test.js +0 -26
- package/dist/core/test/build-action.unit.test.js.map +0 -1
- package/dist/core/test/identity.unit.test.d.ts +0 -5
- package/dist/core/test/identity.unit.test.d.ts.map +0 -1
- package/dist/core/test/identity.unit.test.js +0 -168
- package/dist/core/test/identity.unit.test.js.map +0 -1
- package/dist/core/test/package-version.unit.test.d.ts +0 -5
- package/dist/core/test/package-version.unit.test.d.ts.map +0 -1
- package/dist/core/test/package-version.unit.test.js +0 -30
- package/dist/core/test/package-version.unit.test.js.map +0 -1
- package/dist/core/test/version-check.unit.test.d.ts +0 -5
- package/dist/core/test/version-check.unit.test.d.ts.map +0 -1
- package/dist/core/test/version-check.unit.test.js +0 -191
- package/dist/core/test/version-check.unit.test.js.map +0 -1
- package/dist/test/account-join.integration.test.d.ts +0 -5
- package/dist/test/account-join.integration.test.d.ts.map +0 -1
- package/dist/test/account-join.integration.test.js +0 -279
- package/dist/test/account-join.integration.test.js.map +0 -1
- package/dist/test/account-ledger-helpers.d.ts +0 -35
- package/dist/test/account-ledger-helpers.d.ts.map +0 -1
- package/dist/test/account-ledger-helpers.js +0 -81
- package/dist/test/account-ledger-helpers.js.map +0 -1
- package/dist/test/account-ledger-hub-replication.integration.test.d.ts +0 -5
- package/dist/test/account-ledger-hub-replication.integration.test.d.ts.map +0 -1
- package/dist/test/account-ledger-hub-replication.integration.test.js +0 -100
- package/dist/test/account-ledger-hub-replication.integration.test.js.map +0 -1
- package/dist/test/account-ledger-lock-worker.d.ts +0 -9
- package/dist/test/account-ledger-lock-worker.d.ts.map +0 -1
- package/dist/test/account-ledger-lock-worker.js +0 -34
- package/dist/test/account-ledger-lock-worker.js.map +0 -1
- package/dist/test/account-ledger-lock.integration.test.d.ts +0 -5
- package/dist/test/account-ledger-lock.integration.test.d.ts.map +0 -1
- package/dist/test/account-ledger-lock.integration.test.js +0 -71
- package/dist/test/account-ledger-lock.integration.test.js.map +0 -1
- package/dist/test/account-ledger-replication.integration.test.d.ts +0 -5
- package/dist/test/account-ledger-replication.integration.test.d.ts.map +0 -1
- package/dist/test/account-ledger-replication.integration.test.js +0 -83
- package/dist/test/account-ledger-replication.integration.test.js.map +0 -1
- package/dist/test/account-ledger.unit.test.d.ts +0 -5
- package/dist/test/account-ledger.unit.test.d.ts.map +0 -1
- package/dist/test/account-ledger.unit.test.js +0 -317
- package/dist/test/account-ledger.unit.test.js.map +0 -1
- package/dist/test/account-transfer.unit.test.d.ts +0 -5
- package/dist/test/account-transfer.unit.test.d.ts.map +0 -1
- package/dist/test/account-transfer.unit.test.js +0 -232
- package/dist/test/account-transfer.unit.test.js.map +0 -1
- package/dist/test/agent-comms-version-gossip.integration.test.d.ts +0 -5
- package/dist/test/agent-comms-version-gossip.integration.test.d.ts.map +0 -1
- package/dist/test/agent-comms-version-gossip.integration.test.js +0 -112
- package/dist/test/agent-comms-version-gossip.integration.test.js.map +0 -1
- package/dist/test/agent-details-hub.integration.test.d.ts +0 -2
- package/dist/test/agent-details-hub.integration.test.d.ts.map +0 -1
- package/dist/test/agent-details-hub.integration.test.js +0 -64
- package/dist/test/agent-details-hub.integration.test.js.map +0 -1
- package/dist/test/agent-details-refresh.unit.test.d.ts +0 -5
- package/dist/test/agent-details-refresh.unit.test.d.ts.map +0 -1
- package/dist/test/agent-details-refresh.unit.test.js +0 -108
- package/dist/test/agent-details-refresh.unit.test.js.map +0 -1
- package/dist/test/agent-details.unit.test.d.ts +0 -5
- package/dist/test/agent-details.unit.test.d.ts.map +0 -1
- package/dist/test/agent-details.unit.test.js +0 -86
- package/dist/test/agent-details.unit.test.js.map +0 -1
- package/dist/test/agent-registry.unit.test.d.ts +0 -2
- package/dist/test/agent-registry.unit.test.d.ts.map +0 -1
- package/dist/test/agent-registry.unit.test.js +0 -507
- package/dist/test/agent-registry.unit.test.js.map +0 -1
- package/dist/test/agent-self-gossip.integration.test.d.ts +0 -5
- package/dist/test/agent-self-gossip.integration.test.d.ts.map +0 -1
- package/dist/test/agent-self-gossip.integration.test.js +0 -102
- package/dist/test/agent-self-gossip.integration.test.js.map +0 -1
- package/dist/test/approval.integration.test.d.ts +0 -9
- package/dist/test/approval.integration.test.d.ts.map +0 -1
- package/dist/test/approval.integration.test.js +0 -516
- package/dist/test/approval.integration.test.js.map +0 -1
- package/dist/test/become-coordinator-actual-port.integration.test.d.ts +0 -5
- package/dist/test/become-coordinator-actual-port.integration.test.d.ts.map +0 -1
- package/dist/test/become-coordinator-actual-port.integration.test.js +0 -74
- package/dist/test/become-coordinator-actual-port.integration.test.js.map +0 -1
- package/dist/test/bridge-mesh-data-directory.integration.test.d.ts +0 -2
- package/dist/test/bridge-mesh-data-directory.integration.test.d.ts.map +0 -1
- package/dist/test/bridge-mesh-data-directory.integration.test.js +0 -234
- package/dist/test/bridge-mesh-data-directory.integration.test.js.map +0 -1
- package/dist/test/bridge-mesh-version-drift.integration.test.d.ts +0 -7
- package/dist/test/bridge-mesh-version-drift.integration.test.d.ts.map +0 -1
- package/dist/test/bridge-mesh-version-drift.integration.test.js +0 -98
- package/dist/test/bridge-mesh-version-drift.integration.test.js.map +0 -1
- package/dist/test/bridge-mesh.integration.test.d.ts +0 -5
- package/dist/test/bridge-mesh.integration.test.d.ts.map +0 -1
- package/dist/test/bridge-mesh.integration.test.js +0 -206
- package/dist/test/bridge-mesh.integration.test.js.map +0 -1
- package/dist/test/bridge-stdout.runner.d.ts +0 -5
- package/dist/test/bridge-stdout.runner.d.ts.map +0 -1
- package/dist/test/bridge-stdout.runner.js +0 -54
- package/dist/test/bridge-stdout.runner.js.map +0 -1
- package/dist/test/broadcast-window.integration.test.d.ts +0 -7
- package/dist/test/broadcast-window.integration.test.d.ts.map +0 -1
- package/dist/test/broadcast-window.integration.test.js +0 -74
- package/dist/test/broadcast-window.integration.test.js.map +0 -1
- package/dist/test/capability-admission-tool-actions.integration.test.d.ts +0 -5
- package/dist/test/capability-admission-tool-actions.integration.test.d.ts.map +0 -1
- package/dist/test/capability-admission-tool-actions.integration.test.js +0 -198
- package/dist/test/capability-admission-tool-actions.integration.test.js.map +0 -1
- package/dist/test/capability-ask.unit.test.d.ts +0 -2
- package/dist/test/capability-ask.unit.test.d.ts.map +0 -1
- package/dist/test/capability-ask.unit.test.js +0 -300
- package/dist/test/capability-ask.unit.test.js.map +0 -1
- package/dist/test/capability-bubble-up.unit.test.d.ts +0 -2
- package/dist/test/capability-bubble-up.unit.test.d.ts.map +0 -1
- package/dist/test/capability-bubble-up.unit.test.js +0 -350
- package/dist/test/capability-bubble-up.unit.test.js.map +0 -1
- package/dist/test/cc-peer-alias-reply-routing.integration.test.d.ts +0 -5
- package/dist/test/cc-peer-alias-reply-routing.integration.test.d.ts.map +0 -1
- package/dist/test/cc-peer-alias-reply-routing.integration.test.js +0 -149
- package/dist/test/cc-peer-alias-reply-routing.integration.test.js.map +0 -1
- package/dist/test/cc-peer-approval-commands.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-approval-commands.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-approval-commands.unit.test.js +0 -110
- package/dist/test/cc-peer-approval-commands.unit.test.js.map +0 -1
- package/dist/test/cc-peer-bridge.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-bridge.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-bridge.unit.test.js +0 -361
- package/dist/test/cc-peer-bridge.unit.test.js.map +0 -1
- package/dist/test/cc-peer-default-front.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-default-front.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-default-front.unit.test.js +0 -83
- package/dist/test/cc-peer-default-front.unit.test.js.map +0 -1
- package/dist/test/cc-peer-front-controller.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-front-controller.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-front-controller.unit.test.js +0 -398
- package/dist/test/cc-peer-front-controller.unit.test.js.map +0 -1
- package/dist/test/cc-peer-front-relay.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-front-relay.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-front-relay.unit.test.js +0 -725
- package/dist/test/cc-peer-front-relay.unit.test.js.map +0 -1
- package/dist/test/cc-peer-front-runtime-mesh.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-front-runtime-mesh.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-front-runtime-mesh.unit.test.js +0 -57
- package/dist/test/cc-peer-front-runtime-mesh.unit.test.js.map +0 -1
- package/dist/test/cc-peer-front-runtime.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-front-runtime.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-front-runtime.unit.test.js +0 -72
- package/dist/test/cc-peer-front-runtime.unit.test.js.map +0 -1
- package/dist/test/cc-peer-front.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-front.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-front.unit.test.js +0 -109
- package/dist/test/cc-peer-front.unit.test.js.map +0 -1
- package/dist/test/cc-peer-fronted-approval.integration.test.d.ts +0 -5
- package/dist/test/cc-peer-fronted-approval.integration.test.d.ts.map +0 -1
- package/dist/test/cc-peer-fronted-approval.integration.test.js +0 -138
- package/dist/test/cc-peer-fronted-approval.integration.test.js.map +0 -1
- package/dist/test/cc-peer-reply-aliases.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-reply-aliases.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-reply-aliases.unit.test.js +0 -142
- package/dist/test/cc-peer-reply-aliases.unit.test.js.map +0 -1
- package/dist/test/cc-peer-shared-peer.unit.test.d.ts +0 -2
- package/dist/test/cc-peer-shared-peer.unit.test.d.ts.map +0 -1
- package/dist/test/cc-peer-shared-peer.unit.test.js +0 -48
- package/dist/test/cc-peer-shared-peer.unit.test.js.map +0 -1
- package/dist/test/chat-controller-mesh-errors.integration.test.d.ts +0 -2
- package/dist/test/chat-controller-mesh-errors.integration.test.d.ts.map +0 -1
- package/dist/test/chat-controller-mesh-errors.integration.test.js +0 -50
- package/dist/test/chat-controller-mesh-errors.integration.test.js.map +0 -1
- package/dist/test/ci-required-checks.unit.test.d.ts +0 -2
- package/dist/test/ci-required-checks.unit.test.d.ts.map +0 -1
- package/dist/test/ci-required-checks.unit.test.js +0 -137
- package/dist/test/ci-required-checks.unit.test.js.map +0 -1
- package/dist/test/claude-command.unit.test.d.ts +0 -2
- package/dist/test/claude-command.unit.test.d.ts.map +0 -1
- package/dist/test/claude-command.unit.test.js +0 -11
- package/dist/test/claude-command.unit.test.js.map +0 -1
- package/dist/test/conformance/corpus-files.d.ts +0 -11
- package/dist/test/conformance/corpus-files.d.ts.map +0 -1
- package/dist/test/conformance/corpus-files.js +0 -71
- package/dist/test/conformance/corpus-files.js.map +0 -1
- package/dist/test/conformance/corpus-types.d.ts +0 -62
- package/dist/test/conformance/corpus-types.d.ts.map +0 -1
- package/dist/test/conformance/corpus-types.js +0 -8
- package/dist/test/conformance/corpus-types.js.map +0 -1
- package/dist/test/conformance/corpus.d.ts +0 -34
- package/dist/test/conformance/corpus.d.ts.map +0 -1
- package/dist/test/conformance/corpus.js +0 -134
- package/dist/test/conformance/corpus.js.map +0 -1
- package/dist/test/conformance/read-json.d.ts +0 -4
- package/dist/test/conformance/read-json.d.ts.map +0 -1
- package/dist/test/conformance/read-json.js +0 -11
- package/dist/test/conformance/read-json.js.map +0 -1
- package/dist/test/conformance/test-titles.d.ts +0 -4
- package/dist/test/conformance/test-titles.d.ts.map +0 -1
- package/dist/test/conformance/test-titles.js +0 -86
- package/dist/test/conformance/test-titles.js.map +0 -1
- package/dist/test/conformance/text.d.ts +0 -10
- package/dist/test/conformance/text.d.ts.map +0 -1
- package/dist/test/conformance/text.js +0 -64
- package/dist/test/conformance/text.js.map +0 -1
- package/dist/test/conformance/validate.d.ts +0 -24
- package/dist/test/conformance/validate.d.ts.map +0 -1
- package/dist/test/conformance/validate.js +0 -153
- package/dist/test/conformance/validate.js.map +0 -1
- package/dist/test/conformance-functions.helper.d.ts +0 -19
- package/dist/test/conformance-functions.helper.d.ts.map +0 -1
- package/dist/test/conformance-functions.helper.js +0 -586
- package/dist/test/conformance-functions.helper.js.map +0 -1
- package/dist/test/conformance-kept-tests.unit.test.d.ts +0 -2
- package/dist/test/conformance-kept-tests.unit.test.d.ts.map +0 -1
- package/dist/test/conformance-kept-tests.unit.test.js +0 -220
- package/dist/test/conformance-kept-tests.unit.test.js.map +0 -1
- package/dist/test/conformance.unit.test.d.ts +0 -2
- package/dist/test/conformance.unit.test.d.ts.map +0 -1
- package/dist/test/conformance.unit.test.js +0 -371
- package/dist/test/conformance.unit.test.js.map +0 -1
- package/dist/test/connection-approval.unit.test.d.ts +0 -2
- package/dist/test/connection-approval.unit.test.d.ts.map +0 -1
- package/dist/test/connection-approval.unit.test.js +0 -194
- package/dist/test/connection-approval.unit.test.js.map +0 -1
- package/dist/test/connection-code-ledger-persistence.unit.test.d.ts +0 -5
- package/dist/test/connection-code-ledger-persistence.unit.test.d.ts.map +0 -1
- package/dist/test/connection-code-ledger-persistence.unit.test.js +0 -84
- package/dist/test/connection-code-ledger-persistence.unit.test.js.map +0 -1
- package/dist/test/connection-code-tool.e2e.test.d.ts +0 -2
- package/dist/test/connection-code-tool.e2e.test.d.ts.map +0 -1
- package/dist/test/connection-code-tool.e2e.test.js +0 -300
- package/dist/test/connection-code-tool.e2e.test.js.map +0 -1
- package/dist/test/connection-code.unit.test.d.ts +0 -5
- package/dist/test/connection-code.unit.test.d.ts.map +0 -1
- package/dist/test/connection-code.unit.test.js +0 -234
- package/dist/test/connection-code.unit.test.js.map +0 -1
- package/dist/test/coordinator-claim-sessions.integration.test.d.ts +0 -5
- package/dist/test/coordinator-claim-sessions.integration.test.d.ts.map +0 -1
- package/dist/test/coordinator-claim-sessions.integration.test.js +0 -276
- package/dist/test/coordinator-claim-sessions.integration.test.js.map +0 -1
- package/dist/test/coordinator-election.integration.test.d.ts +0 -5
- package/dist/test/coordinator-election.integration.test.d.ts.map +0 -1
- package/dist/test/coordinator-election.integration.test.js +0 -182
- package/dist/test/coordinator-election.integration.test.js.map +0 -1
- package/dist/test/coordinator-failover-hub.integration.test.d.ts +0 -5
- package/dist/test/coordinator-failover-hub.integration.test.d.ts.map +0 -1
- package/dist/test/coordinator-failover-hub.integration.test.js +0 -84
- package/dist/test/coordinator-failover-hub.integration.test.js.map +0 -1
- package/dist/test/coordinator-failover.integration.test.d.ts +0 -5
- package/dist/test/coordinator-failover.integration.test.d.ts.map +0 -1
- package/dist/test/coordinator-failover.integration.test.js +0 -150
- package/dist/test/coordinator-failover.integration.test.js.map +0 -1
- package/dist/test/coordinator-failover.unit.test.d.ts +0 -5
- package/dist/test/coordinator-failover.unit.test.d.ts.map +0 -1
- package/dist/test/coordinator-failover.unit.test.js +0 -377
- package/dist/test/coordinator-failover.unit.test.js.map +0 -1
- package/dist/test/coordinator-role.unit.test.d.ts +0 -5
- package/dist/test/coordinator-role.unit.test.d.ts.map +0 -1
- package/dist/test/coordinator-role.unit.test.js +0 -410
- package/dist/test/coordinator-role.unit.test.js.map +0 -1
- package/dist/test/coordinator-socket-error.integration.test.d.ts +0 -8
- package/dist/test/coordinator-socket-error.integration.test.d.ts.map +0 -1
- package/dist/test/coordinator-socket-error.integration.test.js +0 -47
- package/dist/test/coordinator-socket-error.integration.test.js.map +0 -1
- package/dist/test/create-room-mints-owner-grant.integration.test.d.ts +0 -5
- package/dist/test/create-room-mints-owner-grant.integration.test.d.ts.map +0 -1
- package/dist/test/create-room-mints-owner-grant.integration.test.js +0 -54
- package/dist/test/create-room-mints-owner-grant.integration.test.js.map +0 -1
- package/dist/test/create-room-name-sanitisation.integration.test.d.ts +0 -5
- package/dist/test/create-room-name-sanitisation.integration.test.d.ts.map +0 -1
- package/dist/test/create-room-name-sanitisation.integration.test.js +0 -51
- package/dist/test/create-room-name-sanitisation.integration.test.js.map +0 -1
- package/dist/test/data-directory.unit.test.d.ts +0 -2
- package/dist/test/data-directory.unit.test.d.ts.map +0 -1
- package/dist/test/data-directory.unit.test.js +0 -27
- package/dist/test/data-directory.unit.test.js.map +0 -1
- package/dist/test/data-frame-routing.unit.test.d.ts +0 -5
- package/dist/test/data-frame-routing.unit.test.d.ts.map +0 -1
- package/dist/test/data-frame-routing.unit.test.js +0 -79
- package/dist/test/data-frame-routing.unit.test.js.map +0 -1
- package/dist/test/data-sync-frame-handling.integration.test.d.ts +0 -5
- package/dist/test/data-sync-frame-handling.integration.test.d.ts.map +0 -1
- package/dist/test/data-sync-frame-handling.integration.test.js +0 -118
- package/dist/test/data-sync-frame-handling.integration.test.js.map +0 -1
- package/dist/test/delivery-engine-delivery.unit.test.d.ts +0 -2
- package/dist/test/delivery-engine-delivery.unit.test.d.ts.map +0 -1
- package/dist/test/delivery-engine-delivery.unit.test.js +0 -729
- package/dist/test/delivery-engine-delivery.unit.test.js.map +0 -1
- package/dist/test/delivery-engine-directed-notify.unit.test.d.ts +0 -2
- package/dist/test/delivery-engine-directed-notify.unit.test.d.ts.map +0 -1
- package/dist/test/delivery-engine-directed-notify.unit.test.js +0 -319
- package/dist/test/delivery-engine-directed-notify.unit.test.js.map +0 -1
- package/dist/test/delivery-engine-own-agent.unit.test.d.ts +0 -2
- package/dist/test/delivery-engine-own-agent.unit.test.d.ts.map +0 -1
- package/dist/test/delivery-engine-own-agent.unit.test.js +0 -144
- package/dist/test/delivery-engine-own-agent.unit.test.js.map +0 -1
- package/dist/test/delivery-engine.unit.test.d.ts +0 -2
- package/dist/test/delivery-engine.unit.test.d.ts.map +0 -1
- package/dist/test/delivery-engine.unit.test.js +0 -711
- package/dist/test/delivery-engine.unit.test.js.map +0 -1
- package/dist/test/delivery-receipt.helper.d.ts +0 -16
- package/dist/test/delivery-receipt.helper.d.ts.map +0 -1
- package/dist/test/delivery-receipt.helper.js +0 -480
- package/dist/test/delivery-receipt.helper.js.map +0 -1
- package/dist/test/delivery-receipt.runner.d.ts +0 -8
- package/dist/test/delivery-receipt.runner.d.ts.map +0 -1
- package/dist/test/delivery-receipt.runner.js +0 -46
- package/dist/test/delivery-receipt.runner.js.map +0 -1
- package/dist/test/device-membership-verification.unit.test.d.ts +0 -2
- package/dist/test/device-membership-verification.unit.test.d.ts.map +0 -1
- package/dist/test/device-membership-verification.unit.test.js +0 -214
- package/dist/test/device-membership-verification.unit.test.js.map +0 -1
- package/dist/test/device-membership.unit.test.d.ts +0 -2
- package/dist/test/device-membership.unit.test.d.ts.map +0 -1
- package/dist/test/device-membership.unit.test.js +0 -250
- package/dist/test/device-membership.unit.test.js.map +0 -1
- package/dist/test/directory-admission.unit.test.d.ts +0 -2
- package/dist/test/directory-admission.unit.test.d.ts.map +0 -1
- package/dist/test/directory-admission.unit.test.js +0 -300
- package/dist/test/directory-admission.unit.test.js.map +0 -1
- package/dist/test/discovery-mdns.unit.test.d.ts +0 -2
- package/dist/test/discovery-mdns.unit.test.d.ts.map +0 -1
- package/dist/test/discovery-mdns.unit.test.js +0 -123
- package/dist/test/discovery-mdns.unit.test.js.map +0 -1
- package/dist/test/dm-admission.integration.test.d.ts +0 -7
- package/dist/test/dm-admission.integration.test.d.ts.map +0 -1
- package/dist/test/dm-admission.integration.test.js +0 -90
- package/dist/test/dm-admission.integration.test.js.map +0 -1
- package/dist/test/dm-delivery-status.integration.test.d.ts +0 -5
- package/dist/test/dm-delivery-status.integration.test.d.ts.map +0 -1
- package/dist/test/dm-delivery-status.integration.test.js +0 -72
- package/dist/test/dm-delivery-status.integration.test.js.map +0 -1
- package/dist/test/dm-first-contact.integration.test.d.ts +0 -5
- package/dist/test/dm-first-contact.integration.test.d.ts.map +0 -1
- package/dist/test/dm-first-contact.integration.test.js +0 -100
- package/dist/test/dm-first-contact.integration.test.js.map +0 -1
- package/dist/test/dm-grant-actions.unit.test.d.ts +0 -2
- package/dist/test/dm-grant-actions.unit.test.d.ts.map +0 -1
- package/dist/test/dm-grant-actions.unit.test.js +0 -78
- package/dist/test/dm-grant-actions.unit.test.js.map +0 -1
- package/dist/test/dm-grant-tool.integration.test.d.ts +0 -5
- package/dist/test/dm-grant-tool.integration.test.d.ts.map +0 -1
- package/dist/test/dm-grant-tool.integration.test.js +0 -253
- package/dist/test/dm-grant-tool.integration.test.js.map +0 -1
- package/dist/test/dm-send-capability-admission.integration.test.d.ts +0 -5
- package/dist/test/dm-send-capability-admission.integration.test.d.ts.map +0 -1
- package/dist/test/dm-send-capability-admission.integration.test.js +0 -165
- package/dist/test/dm-send-capability-admission.integration.test.js.map +0 -1
- package/dist/test/dm-send-delegation.unit.test.d.ts +0 -2
- package/dist/test/dm-send-delegation.unit.test.d.ts.map +0 -1
- package/dist/test/dm-send-delegation.unit.test.js +0 -180
- package/dist/test/dm-send-delegation.unit.test.js.map +0 -1
- package/dist/test/dm-send-principal-delegation.integration.test.d.ts +0 -2
- package/dist/test/dm-send-principal-delegation.integration.test.d.ts.map +0 -1
- package/dist/test/dm-send-principal-delegation.integration.test.js +0 -90
- package/dist/test/dm-send-principal-delegation.integration.test.js.map +0 -1
- package/dist/test/dm-token-verification.unit.test.d.ts +0 -5
- package/dist/test/dm-token-verification.unit.test.d.ts.map +0 -1
- package/dist/test/dm-token-verification.unit.test.js +0 -164
- package/dist/test/dm-token-verification.unit.test.js.map +0 -1
- package/dist/test/election-sessions.unit.test.d.ts +0 -5
- package/dist/test/election-sessions.unit.test.d.ts.map +0 -1
- package/dist/test/election-sessions.unit.test.js +0 -104
- package/dist/test/election-sessions.unit.test.js.map +0 -1
- package/dist/test/error-reporting.unit.test.d.ts +0 -2
- package/dist/test/error-reporting.unit.test.d.ts.map +0 -1
- package/dist/test/error-reporting.unit.test.js +0 -20
- package/dist/test/error-reporting.unit.test.js.map +0 -1
- package/dist/test/filestore.unit.test.d.ts +0 -5
- package/dist/test/filestore.unit.test.d.ts.map +0 -1
- package/dist/test/filestore.unit.test.js +0 -175
- package/dist/test/filestore.unit.test.js.map +0 -1
- package/dist/test/first-contact.unit.test.d.ts +0 -2
- package/dist/test/first-contact.unit.test.d.ts.map +0 -1
- package/dist/test/first-contact.unit.test.js +0 -209
- package/dist/test/first-contact.unit.test.js.map +0 -1
- package/dist/test/front-real-bridge-identity-overlap.integration.test.d.ts +0 -7
- package/dist/test/front-real-bridge-identity-overlap.integration.test.d.ts.map +0 -1
- package/dist/test/front-real-bridge-identity-overlap.integration.test.js +0 -95
- package/dist/test/front-real-bridge-identity-overlap.integration.test.js.map +0 -1
- package/dist/test/gateway-trust-recheck.unit.test.d.ts +0 -2
- package/dist/test/gateway-trust-recheck.unit.test.d.ts.map +0 -1
- package/dist/test/gateway-trust-recheck.unit.test.js +0 -75
- package/dist/test/gateway-trust-recheck.unit.test.js.map +0 -1
- package/dist/test/gateway-trust-tool.integration.test.d.ts +0 -2
- package/dist/test/gateway-trust-tool.integration.test.d.ts.map +0 -1
- package/dist/test/gateway-trust-tool.integration.test.js +0 -352
- package/dist/test/gateway-trust-tool.integration.test.js.map +0 -1
- package/dist/test/gateway-trust.integration.test.d.ts +0 -5
- package/dist/test/gateway-trust.integration.test.d.ts.map +0 -1
- package/dist/test/gateway-trust.integration.test.js +0 -200
- package/dist/test/gateway-trust.integration.test.js.map +0 -1
- package/dist/test/gateway-trust.unit.test.d.ts +0 -2
- package/dist/test/gateway-trust.unit.test.d.ts.map +0 -1
- package/dist/test/gateway-trust.unit.test.js +0 -387
- package/dist/test/gateway-trust.unit.test.js.map +0 -1
- package/dist/test/gossip-directory-aggregation.integration.test.d.ts +0 -5
- package/dist/test/gossip-directory-aggregation.integration.test.d.ts.map +0 -1
- package/dist/test/gossip-directory-aggregation.integration.test.js +0 -98
- package/dist/test/gossip-directory-aggregation.integration.test.js.map +0 -1
- package/dist/test/gossip-directory.unit.test.d.ts +0 -2
- package/dist/test/gossip-directory.unit.test.d.ts.map +0 -1
- package/dist/test/gossip-directory.unit.test.js +0 -192
- package/dist/test/gossip-directory.unit.test.js.map +0 -1
- package/dist/test/gossip-listener-addresses.integration.test.d.ts +0 -5
- package/dist/test/gossip-listener-addresses.integration.test.d.ts.map +0 -1
- package/dist/test/gossip-listener-addresses.integration.test.js +0 -90
- package/dist/test/gossip-listener-addresses.integration.test.js.map +0 -1
- package/dist/test/handshake.integration.test.d.ts +0 -5
- package/dist/test/handshake.integration.test.d.ts.map +0 -1
- package/dist/test/handshake.integration.test.js +0 -211
- package/dist/test/handshake.integration.test.js.map +0 -1
- package/dist/test/hidden-line.unit.test.d.ts +0 -5
- package/dist/test/hidden-line.unit.test.d.ts.map +0 -1
- package/dist/test/hidden-line.unit.test.js +0 -40
- package/dist/test/hidden-line.unit.test.js.map +0 -1
- package/dist/test/hosted-rooms-gossip.integration.test.d.ts +0 -5
- package/dist/test/hosted-rooms-gossip.integration.test.d.ts.map +0 -1
- package/dist/test/hosted-rooms-gossip.integration.test.js +0 -103
- package/dist/test/hosted-rooms-gossip.integration.test.js.map +0 -1
- package/dist/test/hub-exposure.integration.test.d.ts +0 -5
- package/dist/test/hub-exposure.integration.test.d.ts.map +0 -1
- package/dist/test/hub-exposure.integration.test.js +0 -165
- package/dist/test/hub-exposure.integration.test.js.map +0 -1
- package/dist/test/hub-helpers.d.ts +0 -45
- package/dist/test/hub-helpers.d.ts.map +0 -1
- package/dist/test/hub-helpers.js +0 -245
- package/dist/test/hub-helpers.js.map +0 -1
- package/dist/test/hub-link.unit.test.d.ts +0 -2
- package/dist/test/hub-link.unit.test.d.ts.map +0 -1
- package/dist/test/hub-link.unit.test.js +0 -256
- package/dist/test/hub-link.unit.test.js.map +0 -1
- package/dist/test/hub-mode-session.integration.test.d.ts +0 -2
- package/dist/test/hub-mode-session.integration.test.d.ts.map +0 -1
- package/dist/test/hub-mode-session.integration.test.js +0 -173
- package/dist/test/hub-mode-session.integration.test.js.map +0 -1
- package/dist/test/hub-peer-per-store.integration.test.d.ts +0 -9
- package/dist/test/hub-peer-per-store.integration.test.d.ts.map +0 -1
- package/dist/test/hub-peer-per-store.integration.test.js +0 -218
- package/dist/test/hub-peer-per-store.integration.test.js.map +0 -1
- package/dist/test/hub-room-domain-verb-trust-bypass.integration.test.d.ts +0 -7
- package/dist/test/hub-room-domain-verb-trust-bypass.integration.test.d.ts.map +0 -1
- package/dist/test/hub-room-domain-verb-trust-bypass.integration.test.js +0 -93
- package/dist/test/hub-room-domain-verb-trust-bypass.integration.test.js.map +0 -1
- package/dist/test/hub-session-close.integration.test.d.ts +0 -5
- package/dist/test/hub-session-close.integration.test.d.ts.map +0 -1
- package/dist/test/hub-session-close.integration.test.js +0 -38
- package/dist/test/hub-session-close.integration.test.js.map +0 -1
- package/dist/test/hub-session-dispatch.unit.test.d.ts +0 -5
- package/dist/test/hub-session-dispatch.unit.test.d.ts.map +0 -1
- package/dist/test/hub-session-dispatch.unit.test.js +0 -192
- package/dist/test/hub-session-dispatch.unit.test.js.map +0 -1
- package/dist/test/identity-cert.unit.test.d.ts +0 -7
- package/dist/test/identity-cert.unit.test.d.ts.map +0 -1
- package/dist/test/identity-cert.unit.test.js +0 -19
- package/dist/test/identity-cert.unit.test.js.map +0 -1
- package/dist/test/identity-device-id.unit.test.d.ts +0 -5
- package/dist/test/identity-device-id.unit.test.d.ts.map +0 -1
- package/dist/test/identity-device-id.unit.test.js +0 -34
- package/dist/test/identity-device-id.unit.test.js.map +0 -1
- package/dist/test/identity-restart.integration.test.d.ts +0 -7
- package/dist/test/identity-restart.integration.test.d.ts.map +0 -1
- package/dist/test/identity-restart.integration.test.js +0 -173
- package/dist/test/identity-restart.integration.test.js.map +0 -1
- package/dist/test/identity-store-race-worker.d.ts +0 -7
- package/dist/test/identity-store-race-worker.d.ts.map +0 -1
- package/dist/test/identity-store-race-worker.js +0 -33
- package/dist/test/identity-store-race-worker.js.map +0 -1
- package/dist/test/identity-store-race.integration.test.d.ts +0 -5
- package/dist/test/identity-store-race.integration.test.d.ts.map +0 -1
- package/dist/test/identity-store-race.integration.test.js +0 -47
- package/dist/test/identity-store-race.integration.test.js.map +0 -1
- package/dist/test/identity-store-wait.unit.test.d.ts +0 -2
- package/dist/test/identity-store-wait.unit.test.d.ts.map +0 -1
- package/dist/test/identity-store-wait.unit.test.js +0 -75
- package/dist/test/identity-store-wait.unit.test.js.map +0 -1
- package/dist/test/identity-store.integration.test.d.ts +0 -5
- package/dist/test/identity-store.integration.test.d.ts.map +0 -1
- package/dist/test/identity-store.integration.test.js +0 -376
- package/dist/test/identity-store.integration.test.js.map +0 -1
- package/dist/test/issuer-grouping.unit.test.d.ts +0 -2
- package/dist/test/issuer-grouping.unit.test.d.ts.map +0 -1
- package/dist/test/issuer-grouping.unit.test.js +0 -137
- package/dist/test/issuer-grouping.unit.test.js.map +0 -1
- package/dist/test/lan-web-uis.unit.test.d.ts +0 -5
- package/dist/test/lan-web-uis.unit.test.d.ts.map +0 -1
- package/dist/test/lan-web-uis.unit.test.js +0 -72
- package/dist/test/lan-web-uis.unit.test.js.map +0 -1
- package/dist/test/listener-policy.integration.test.d.ts +0 -9
- package/dist/test/listener-policy.integration.test.d.ts.map +0 -1
- package/dist/test/listener-policy.integration.test.js +0 -310
- package/dist/test/listener-policy.integration.test.js.map +0 -1
- package/dist/test/loopback-address.unit.test.d.ts +0 -5
- package/dist/test/loopback-address.unit.test.d.ts.map +0 -1
- package/dist/test/loopback-address.unit.test.js +0 -28
- package/dist/test/loopback-address.unit.test.js.map +0 -1
- package/dist/test/machine-identity.unit.test.d.ts +0 -5
- package/dist/test/machine-identity.unit.test.d.ts.map +0 -1
- package/dist/test/machine-identity.unit.test.js +0 -80
- package/dist/test/machine-identity.unit.test.js.map +0 -1
- package/dist/test/machine-membership-trust.integration.test.d.ts +0 -5
- package/dist/test/machine-membership-trust.integration.test.d.ts.map +0 -1
- package/dist/test/machine-membership-trust.integration.test.js +0 -151
- package/dist/test/machine-membership-trust.integration.test.js.map +0 -1
- package/dist/test/manual-clock.d.ts +0 -7
- package/dist/test/manual-clock.d.ts.map +0 -1
- package/dist/test/manual-clock.js +0 -10
- package/dist/test/manual-clock.js.map +0 -1
- package/dist/test/mcp-stdout-channel.integration.test.d.ts +0 -5
- package/dist/test/mcp-stdout-channel.integration.test.d.ts.map +0 -1
- package/dist/test/mcp-stdout-channel.integration.test.js +0 -123
- package/dist/test/mcp-stdout-channel.integration.test.js.map +0 -1
- package/dist/test/mcp-tool-action-enum.unit.test.d.ts +0 -2
- package/dist/test/mcp-tool-action-enum.unit.test.d.ts.map +0 -1
- package/dist/test/mcp-tool-action-enum.unit.test.js +0 -12
- package/dist/test/mcp-tool-action-enum.unit.test.js.map +0 -1
- package/dist/test/membership-proof.unit.test.d.ts +0 -2
- package/dist/test/membership-proof.unit.test.d.ts.map +0 -1
- package/dist/test/membership-proof.unit.test.js +0 -238
- package/dist/test/membership-proof.unit.test.js.map +0 -1
- package/dist/test/mesh-e2e.integration.test.d.ts +0 -8
- package/dist/test/mesh-e2e.integration.test.d.ts.map +0 -1
- package/dist/test/mesh-e2e.integration.test.js +0 -177
- package/dist/test/mesh-e2e.integration.test.js.map +0 -1
- package/dist/test/mesh-graph-trace-tool.e2e.test.d.ts +0 -2
- package/dist/test/mesh-graph-trace-tool.e2e.test.d.ts.map +0 -1
- package/dist/test/mesh-graph-trace-tool.e2e.test.js +0 -99
- package/dist/test/mesh-graph-trace-tool.e2e.test.js.map +0 -1
- package/dist/test/mesh-graph-trace.integration.test.d.ts +0 -5
- package/dist/test/mesh-graph-trace.integration.test.d.ts.map +0 -1
- package/dist/test/mesh-graph-trace.integration.test.js +0 -153
- package/dist/test/mesh-graph-trace.integration.test.js.map +0 -1
- package/dist/test/mesh-graph.unit.test.d.ts +0 -5
- package/dist/test/mesh-graph.unit.test.d.ts.map +0 -1
- package/dist/test/mesh-graph.unit.test.js +0 -121
- package/dist/test/mesh-graph.unit.test.js.map +0 -1
- package/dist/test/mesh-smoke.runner.d.ts +0 -9
- package/dist/test/mesh-smoke.runner.d.ts.map +0 -1
- package/dist/test/mesh-smoke.runner.js +0 -262
- package/dist/test/mesh-smoke.runner.js.map +0 -1
- package/dist/test/mesh-store-delivery-listeners.integration.test.d.ts +0 -2
- package/dist/test/mesh-store-delivery-listeners.integration.test.d.ts.map +0 -1
- package/dist/test/mesh-store-delivery-listeners.integration.test.js +0 -160
- package/dist/test/mesh-store-delivery-listeners.integration.test.js.map +0 -1
- package/dist/test/mesh-store-durable-send.integration.test.d.ts +0 -2
- package/dist/test/mesh-store-durable-send.integration.test.d.ts.map +0 -1
- package/dist/test/mesh-store-durable-send.integration.test.js +0 -55
- package/dist/test/mesh-store-durable-send.integration.test.js.map +0 -1
- package/dist/test/mesh-store-orchestration.unit.test.d.ts +0 -2
- package/dist/test/mesh-store-orchestration.unit.test.d.ts.map +0 -1
- package/dist/test/mesh-store-orchestration.unit.test.js +0 -662
- package/dist/test/mesh-store-orchestration.unit.test.js.map +0 -1
- package/dist/test/mesh-store-shared.unit.test.d.ts +0 -2
- package/dist/test/mesh-store-shared.unit.test.d.ts.map +0 -1
- package/dist/test/mesh-store-shared.unit.test.js +0 -107
- package/dist/test/mesh-store-shared.unit.test.js.map +0 -1
- package/dist/test/name-claim.unit.test.d.ts +0 -5
- package/dist/test/name-claim.unit.test.d.ts.map +0 -1
- package/dist/test/name-claim.unit.test.js +0 -135
- package/dist/test/name-claim.unit.test.js.map +0 -1
- package/dist/test/naming.integration.test.d.ts +0 -5
- package/dist/test/naming.integration.test.d.ts.map +0 -1
- package/dist/test/naming.integration.test.js +0 -231
- package/dist/test/naming.integration.test.js.map +0 -1
- package/dist/test/peer-lifecycle.unit.test.d.ts +0 -2
- package/dist/test/peer-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/test/peer-lifecycle.unit.test.js +0 -252
- package/dist/test/peer-lifecycle.unit.test.js.map +0 -1
- package/dist/test/peer-link-error.integration.test.d.ts +0 -2
- package/dist/test/peer-link-error.integration.test.d.ts.map +0 -1
- package/dist/test/peer-link-error.integration.test.js +0 -33
- package/dist/test/peer-link-error.integration.test.js.map +0 -1
- package/dist/test/peer-versions.unit.test.d.ts +0 -5
- package/dist/test/peer-versions.unit.test.d.ts.map +0 -1
- package/dist/test/peer-versions.unit.test.js +0 -68
- package/dist/test/peer-versions.unit.test.js.map +0 -1
- package/dist/test/petnames.unit.test.d.ts +0 -5
- package/dist/test/petnames.unit.test.d.ts.map +0 -1
- package/dist/test/petnames.unit.test.js +0 -94
- package/dist/test/petnames.unit.test.js.map +0 -1
- package/dist/test/pgp-keyserver.unit.test.d.ts +0 -5
- package/dist/test/pgp-keyserver.unit.test.d.ts.map +0 -1
- package/dist/test/pgp-keyserver.unit.test.js +0 -24
- package/dist/test/pgp-keyserver.unit.test.js.map +0 -1
- package/dist/test/pi-manifest-packed.integration.test.d.ts +0 -2
- package/dist/test/pi-manifest-packed.integration.test.d.ts.map +0 -1
- package/dist/test/pi-manifest-packed.integration.test.js +0 -68
- package/dist/test/pi-manifest-packed.integration.test.js.map +0 -1
- package/dist/test/plugin-hooks.unit.test.d.ts +0 -2
- package/dist/test/plugin-hooks.unit.test.d.ts.map +0 -1
- package/dist/test/plugin-hooks.unit.test.js +0 -99
- package/dist/test/plugin-hooks.unit.test.js.map +0 -1
- package/dist/test/presence-readvertise.integration.test.d.ts +0 -5
- package/dist/test/presence-readvertise.integration.test.d.ts.map +0 -1
- package/dist/test/presence-readvertise.integration.test.js +0 -139
- package/dist/test/presence-readvertise.integration.test.js.map +0 -1
- package/dist/test/principal-membership-trust.integration.test.d.ts +0 -5
- package/dist/test/principal-membership-trust.integration.test.d.ts.map +0 -1
- package/dist/test/principal-membership-trust.integration.test.js +0 -169
- package/dist/test/principal-membership-trust.integration.test.js.map +0 -1
- package/dist/test/query-version.integration.test.d.ts +0 -5
- package/dist/test/query-version.integration.test.d.ts.map +0 -1
- package/dist/test/query-version.integration.test.js +0 -68
- package/dist/test/query-version.integration.test.js.map +0 -1
- package/dist/test/random-id.unit.test.d.ts +0 -2
- package/dist/test/random-id.unit.test.d.ts.map +0 -1
- package/dist/test/random-id.unit.test.js +0 -16
- package/dist/test/random-id.unit.test.js.map +0 -1
- package/dist/test/relay-role.integration.test.d.ts +0 -5
- package/dist/test/relay-role.integration.test.d.ts.map +0 -1
- package/dist/test/relay-role.integration.test.js +0 -134
- package/dist/test/relay-role.integration.test.js.map +0 -1
- package/dist/test/room-admission-tool-actions.integration.test.d.ts +0 -5
- package/dist/test/room-admission-tool-actions.integration.test.d.ts.map +0 -1
- package/dist/test/room-admission-tool-actions.integration.test.js +0 -166
- package/dist/test/room-admission-tool-actions.integration.test.js.map +0 -1
- package/dist/test/room-destroy-revocation.integration.test.d.ts +0 -5
- package/dist/test/room-destroy-revocation.integration.test.d.ts.map +0 -1
- package/dist/test/room-destroy-revocation.integration.test.js +0 -62
- package/dist/test/room-destroy-revocation.integration.test.js.map +0 -1
- package/dist/test/room-invite-directed.integration.test.d.ts +0 -5
- package/dist/test/room-invite-directed.integration.test.d.ts.map +0 -1
- package/dist/test/room-invite-directed.integration.test.js +0 -94
- package/dist/test/room-invite-directed.integration.test.js.map +0 -1
- package/dist/test/room-join-admission.integration.test.d.ts +0 -7
- package/dist/test/room-join-admission.integration.test.d.ts.map +0 -1
- package/dist/test/room-join-admission.integration.test.js +0 -228
- package/dist/test/room-join-admission.integration.test.js.map +0 -1
- package/dist/test/room-join-approval-timeout.integration.test.d.ts +0 -5
- package/dist/test/room-join-approval-timeout.integration.test.d.ts.map +0 -1
- package/dist/test/room-join-approval-timeout.integration.test.js +0 -77
- package/dist/test/room-join-approval-timeout.integration.test.js.map +0 -1
- package/dist/test/room-join-by-bare-name.integration.test.d.ts +0 -5
- package/dist/test/room-join-by-bare-name.integration.test.d.ts.map +0 -1
- package/dist/test/room-join-by-bare-name.integration.test.js +0 -128
- package/dist/test/room-join-by-bare-name.integration.test.js.map +0 -1
- package/dist/test/room-kick-revocation.integration.test.d.ts +0 -7
- package/dist/test/room-kick-revocation.integration.test.d.ts.map +0 -1
- package/dist/test/room-kick-revocation.integration.test.js +0 -78
- package/dist/test/room-kick-revocation.integration.test.js.map +0 -1
- package/dist/test/room-leave-revocation.integration.test.d.ts +0 -5
- package/dist/test/room-leave-revocation.integration.test.d.ts.map +0 -1
- package/dist/test/room-leave-revocation.integration.test.js +0 -95
- package/dist/test/room-leave-revocation.integration.test.js.map +0 -1
- package/dist/test/room-lifecycle-bare-name.unit.test.d.ts +0 -2
- package/dist/test/room-lifecycle-bare-name.unit.test.d.ts.map +0 -1
- package/dist/test/room-lifecycle-bare-name.unit.test.js +0 -181
- package/dist/test/room-lifecycle-bare-name.unit.test.js.map +0 -1
- package/dist/test/room-lifecycle-membership.unit.test.d.ts +0 -2
- package/dist/test/room-lifecycle-membership.unit.test.d.ts.map +0 -1
- package/dist/test/room-lifecycle-membership.unit.test.js +0 -551
- package/dist/test/room-lifecycle-membership.unit.test.js.map +0 -1
- package/dist/test/room-lifecycle-remote.unit.test.d.ts +0 -2
- package/dist/test/room-lifecycle-remote.unit.test.d.ts.map +0 -1
- package/dist/test/room-lifecycle-remote.unit.test.js +0 -388
- package/dist/test/room-lifecycle-remote.unit.test.js.map +0 -1
- package/dist/test/room-lifecycle.unit.test.d.ts +0 -2
- package/dist/test/room-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/test/room-lifecycle.unit.test.js +0 -561
- package/dist/test/room-lifecycle.unit.test.js.map +0 -1
- package/dist/test/room-messaging-durable-send.unit.test.d.ts +0 -2
- package/dist/test/room-messaging-durable-send.unit.test.d.ts.map +0 -1
- package/dist/test/room-messaging-durable-send.unit.test.js +0 -122
- package/dist/test/room-messaging-durable-send.unit.test.js.map +0 -1
- package/dist/test/room-messaging.unit.test.d.ts +0 -2
- package/dist/test/room-messaging.unit.test.d.ts.map +0 -1
- package/dist/test/room-messaging.unit.test.js +0 -495
- package/dist/test/room-messaging.unit.test.js.map +0 -1
- package/dist/test/room-notice-log.unit.test.d.ts +0 -5
- package/dist/test/room-notice-log.unit.test.d.ts.map +0 -1
- package/dist/test/room-notice-log.unit.test.js +0 -100
- package/dist/test/room-notice-log.unit.test.js.map +0 -1
- package/dist/test/room-protocol-admission.unit.test.d.ts +0 -2
- package/dist/test/room-protocol-admission.unit.test.d.ts.map +0 -1
- package/dist/test/room-protocol-admission.unit.test.js +0 -432
- package/dist/test/room-protocol-admission.unit.test.js.map +0 -1
- package/dist/test/room-protocol-notify.unit.test.d.ts +0 -2
- package/dist/test/room-protocol-notify.unit.test.d.ts.map +0 -1
- package/dist/test/room-protocol-notify.unit.test.js +0 -184
- package/dist/test/room-protocol-notify.unit.test.js.map +0 -1
- package/dist/test/room-protocol-retry-queue.unit.test.d.ts +0 -2
- package/dist/test/room-protocol-retry-queue.unit.test.d.ts.map +0 -1
- package/dist/test/room-protocol-retry-queue.unit.test.js +0 -275
- package/dist/test/room-protocol-retry-queue.unit.test.js.map +0 -1
- package/dist/test/room-protocol.helper.d.ts +0 -60
- package/dist/test/room-protocol.helper.d.ts.map +0 -1
- package/dist/test/room-protocol.helper.js +0 -169
- package/dist/test/room-protocol.helper.js.map +0 -1
- package/dist/test/room-protocol.unit.test.d.ts +0 -2
- package/dist/test/room-protocol.unit.test.d.ts.map +0 -1
- package/dist/test/room-protocol.unit.test.js +0 -431
- package/dist/test/room-protocol.unit.test.js.map +0 -1
- package/dist/test/room-read-directed.integration.test.d.ts +0 -7
- package/dist/test/room-read-directed.integration.test.d.ts.map +0 -1
- package/dist/test/room-read-directed.integration.test.js +0 -136
- package/dist/test/room-read-directed.integration.test.js.map +0 -1
- package/dist/test/room-router.unit.test.d.ts +0 -2
- package/dist/test/room-router.unit.test.d.ts.map +0 -1
- package/dist/test/room-router.unit.test.js +0 -235
- package/dist/test/room-router.unit.test.js.map +0 -1
- package/dist/test/room-send-directed.integration.test.d.ts +0 -7
- package/dist/test/room-send-directed.integration.test.d.ts.map +0 -1
- package/dist/test/room-send-directed.integration.test.js +0 -129
- package/dist/test/room-send-directed.integration.test.js.map +0 -1
- package/dist/test/room-send-retry-queue.integration.test.d.ts +0 -5
- package/dist/test/room-send-retry-queue.integration.test.d.ts.map +0 -1
- package/dist/test/room-send-retry-queue.integration.test.js +0 -152
- package/dist/test/room-send-retry-queue.integration.test.js.map +0 -1
- package/dist/test/room-send-retry.integration.test.d.ts +0 -5
- package/dist/test/room-send-retry.integration.test.d.ts.map +0 -1
- package/dist/test/room-send-retry.integration.test.js +0 -154
- package/dist/test/room-send-retry.integration.test.js.map +0 -1
- package/dist/test/room-state-sync.integration.test.d.ts +0 -5
- package/dist/test/room-state-sync.integration.test.d.ts.map +0 -1
- package/dist/test/room-state-sync.integration.test.js +0 -105
- package/dist/test/room-state-sync.integration.test.js.map +0 -1
- package/dist/test/room-token-store.unit.test.d.ts +0 -5
- package/dist/test/room-token-store.unit.test.d.ts.map +0 -1
- package/dist/test/room-token-store.unit.test.js +0 -124
- package/dist/test/room-token-store.unit.test.js.map +0 -1
- package/dist/test/room-token-verification.unit.test.d.ts +0 -2
- package/dist/test/room-token-verification.unit.test.d.ts.map +0 -1
- package/dist/test/room-token-verification.unit.test.js +0 -238
- package/dist/test/room-token-verification.unit.test.js.map +0 -1
- package/dist/test/scratch-directory.helper.d.ts +0 -18
- package/dist/test/scratch-directory.helper.d.ts.map +0 -1
- package/dist/test/scratch-directory.helper.js +0 -35
- package/dist/test/scratch-directory.helper.js.map +0 -1
- package/dist/test/scratch-directory.setup.d.ts +0 -2
- package/dist/test/scratch-directory.setup.d.ts.map +0 -1
- package/dist/test/scratch-directory.setup.js +0 -7
- package/dist/test/scratch-directory.setup.js.map +0 -1
- package/dist/test/scratch-directory.unit.test.d.ts +0 -2
- package/dist/test/scratch-directory.unit.test.d.ts.map +0 -1
- package/dist/test/scratch-directory.unit.test.js +0 -78
- package/dist/test/scratch-directory.unit.test.js.map +0 -1
- package/dist/test/send-by-room-name.integration.test.d.ts +0 -5
- package/dist/test/send-by-room-name.integration.test.d.ts.map +0 -1
- package/dist/test/send-by-room-name.integration.test.js +0 -77
- package/dist/test/send-by-room-name.integration.test.js.map +0 -1
- package/dist/test/shutdown-signals.unit.test.d.ts +0 -5
- package/dist/test/shutdown-signals.unit.test.d.ts.map +0 -1
- package/dist/test/shutdown-signals.unit.test.js +0 -110
- package/dist/test/shutdown-signals.unit.test.js.map +0 -1
- package/dist/test/stale-agent-checker.unit.test.d.ts +0 -2
- package/dist/test/stale-agent-checker.unit.test.d.ts.map +0 -1
- package/dist/test/stale-agent-checker.unit.test.js +0 -267
- package/dist/test/stale-agent-checker.unit.test.js.map +0 -1
- package/dist/test/state-sync-convergence.integration.test.d.ts +0 -7
- package/dist/test/state-sync-convergence.integration.test.d.ts.map +0 -1
- package/dist/test/state-sync-convergence.integration.test.js +0 -263
- package/dist/test/state-sync-convergence.integration.test.js.map +0 -1
- package/dist/test/synthetic-advert.d.ts +0 -8
- package/dist/test/synthetic-advert.d.ts.map +0 -1
- package/dist/test/synthetic-advert.js +0 -16
- package/dist/test/synthetic-advert.js.map +0 -1
- package/dist/test/test-transport.d.ts +0 -43
- package/dist/test/test-transport.d.ts.map +0 -1
- package/dist/test/test-transport.js +0 -122
- package/dist/test/test-transport.js.map +0 -1
- package/dist/test/token-text.unit.test.d.ts +0 -2
- package/dist/test/token-text.unit.test.d.ts.map +0 -1
- package/dist/test/token-text.unit.test.js +0 -46
- package/dist/test/token-text.unit.test.js.map +0 -1
- package/dist/test/tool-version-reporting.integration.test.d.ts +0 -5
- package/dist/test/tool-version-reporting.integration.test.d.ts.map +0 -1
- package/dist/test/tool-version-reporting.integration.test.js +0 -105
- package/dist/test/tool-version-reporting.integration.test.js.map +0 -1
- package/dist/test/user-identity.unit.test.d.ts +0 -5
- package/dist/test/user-identity.unit.test.d.ts.map +0 -1
- package/dist/test/user-identity.unit.test.js +0 -224
- package/dist/test/user-identity.unit.test.js.map +0 -1
- package/dist/test/user-principal-mints-device-grant.unit.test.d.ts +0 -7
- package/dist/test/user-principal-mints-device-grant.unit.test.d.ts.map +0 -1
- package/dist/test/user-principal-mints-device-grant.unit.test.js +0 -62
- package/dist/test/user-principal-mints-device-grant.unit.test.js.map +0 -1
- package/dist/test/version-report-actions.unit.test.d.ts +0 -5
- package/dist/test/version-report-actions.unit.test.d.ts.map +0 -1
- package/dist/test/version-report-actions.unit.test.js +0 -35
- package/dist/test/version-report-actions.unit.test.js.map +0 -1
- package/dist/test/visibility.integration.test.d.ts +0 -12
- package/dist/test/visibility.integration.test.d.ts.map +0 -1
- package/dist/test/visibility.integration.test.js +0 -259
- package/dist/test/visibility.integration.test.js.map +0 -1
- package/dist/test/web-url-tool-action.integration.test.d.ts +0 -2
- package/dist/test/web-url-tool-action.integration.test.d.ts.map +0 -1
- package/dist/test/web-url-tool-action.integration.test.js +0 -69
- package/dist/test/web-url-tool-action.integration.test.js.map +0 -1
- package/dist/test/wire-mesh-core-version.unit.test.d.ts +0 -5
- package/dist/test/wire-mesh-core-version.unit.test.d.ts.map +0 -1
- package/dist/test/wire-mesh-core-version.unit.test.js +0 -14
- package/dist/test/wire-mesh-core-version.unit.test.js.map +0 -1
- package/dist/test/wire-mesh-identity.unit.test.d.ts +0 -5
- package/dist/test/wire-mesh-identity.unit.test.d.ts.map +0 -1
- package/dist/test/wire-mesh-identity.unit.test.js +0 -26
- package/dist/test/wire-mesh-identity.unit.test.js.map +0 -1
- package/dist/test/wire-mesh-transport-gateway-trust.integration.test.d.ts +0 -2
- package/dist/test/wire-mesh-transport-gateway-trust.integration.test.d.ts.map +0 -1
- package/dist/test/wire-mesh-transport-gateway-trust.integration.test.js +0 -56
- package/dist/test/wire-mesh-transport-gateway-trust.integration.test.js.map +0 -1
- package/dist/test/wire-mesh-transport-hub.integration.test.d.ts +0 -5
- package/dist/test/wire-mesh-transport-hub.integration.test.d.ts.map +0 -1
- package/dist/test/wire-mesh-transport-hub.integration.test.js +0 -140
- package/dist/test/wire-mesh-transport-hub.integration.test.js.map +0 -1
- package/dist/test/wire-mesh-transport-shutdown-unref.integration.test.d.ts +0 -5
- package/dist/test/wire-mesh-transport-shutdown-unref.integration.test.d.ts.map +0 -1
- package/dist/test/wire-mesh-transport-shutdown-unref.integration.test.js +0 -316
- package/dist/test/wire-mesh-transport-shutdown-unref.integration.test.js.map +0 -1
- package/dist/test/wire-mesh-transport.integration.test.d.ts +0 -5
- package/dist/test/wire-mesh-transport.integration.test.d.ts.map +0 -1
- package/dist/test/wire-mesh-transport.integration.test.js +0 -659
- package/dist/test/wire-mesh-transport.integration.test.js.map +0 -1
- package/dist/test/ws-dial.integration.test.d.ts +0 -2
- package/dist/test/ws-dial.integration.test.d.ts.map +0 -1
- package/dist/test/ws-dial.integration.test.js +0 -112
- package/dist/test/ws-dial.integration.test.js.map +0 -1
- package/dist/test/wss-remote-connect.integration.test.d.ts +0 -2
- package/dist/test/wss-remote-connect.integration.test.d.ts.map +0 -1
- package/dist/test/wss-remote-connect.integration.test.js +0 -122
- package/dist/test/wss-remote-connect.integration.test.js.map +0 -1
- package/src/bridges/user/web/test/bridge-web-server.helper.ts +0 -54
- package/src/bridges/user/web/vite.config.ts +0 -71
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){var e=`agent-comms-v1`,t=[{"revision":"
|
|
1
|
+
(function(){var e=`agent-comms-v1`,t=[{"revision":"fa356ca4b2a4b6ec4a929516b593a3e4","url":"mesh-worker.js"},{"revision":"f1ee3afb8c9e8f0d7315fd93d6457316","url":"index.html"},{"revision":"aef2de9b9f0ed47024e02762fc047436","url":"bundle.js"}].map(e=>e.url);self.addEventListener(`install`,n=>{n.waitUntil(self.caches.open(e).then(async e=>e.addAll(t)).then(async()=>self.skipWaiting()))}),self.addEventListener(`activate`,t=>{t.waitUntil(self.caches.keys().then(async t=>Promise.all(t.filter(t=>t!==e).map(async e=>self.caches.delete(e)))))});var n=200,r=300;function i(e,t){return e.method===`GET`&&t.status>=n&&t.status<r}self.addEventListener(`fetch`,t=>{if(new URL(t.request.url).pathname.startsWith(`/api/`)){t.respondWith(fetch(t.request).then(n=>{if(i(t.request,n)){let r=n.clone();self.caches.open(e).then(async e=>e.put(t.request,r))}return n}).catch(async()=>self.caches.open(e).then(async e=>e.match(t.request)).then(e=>e??new Response(`Offline`,{status:503}))));return}t.respondWith(self.caches.open(e).then(async e=>e.match(t.request)).then(async n=>n||fetch(t.request).then(n=>{if(i(t.request,n)){let r=n.clone();self.caches.open(e).then(async e=>e.put(t.request,r))}return n})))})})();
|
package/src/cli-main.ts
CHANGED
|
@@ -35,6 +35,7 @@ import { runTui } from "./bridges/user/tui.js";
|
|
|
35
35
|
import { runCli } from "./bridges/user/cli.js";
|
|
36
36
|
import { readHiddenLine, runAccountCommand } from "./account-cli.js";
|
|
37
37
|
import { openMachineAccountStore } from "./account-join-cli.js";
|
|
38
|
+
import { UnusableIdentityRecordError } from "./core/issuer-identity-file.js";
|
|
38
39
|
|
|
39
40
|
// ---------------------------------------------------------------------------
|
|
40
41
|
// Zod schemas for config files
|
|
@@ -289,10 +290,13 @@ function runBridge(
|
|
|
289
290
|
);
|
|
290
291
|
process.exit(1);
|
|
291
292
|
}
|
|
292
|
-
Promise.resolve(bridge.run(options)).catch(
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
293
|
+
Promise.resolve(bridge.run(options)).catch(exitWithError);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/** Prints why a command could not start and exits non-zero. An unusable identity file's message already says what to do about it, so it is printed without the stack trace that would bury it. */
|
|
297
|
+
function exitWithError(err: unknown): never {
|
|
298
|
+
console.error(err instanceof UnusableIdentityRecordError ? err.message : err);
|
|
299
|
+
process.exit(1);
|
|
296
300
|
}
|
|
297
301
|
|
|
298
302
|
function parseNameArg(args: readonly string[]): {
|
|
@@ -314,18 +318,12 @@ function parseNameArg(args: readonly string[]): {
|
|
|
314
318
|
|
|
315
319
|
function runChat(args: readonly string[]): void {
|
|
316
320
|
const { name } = parseNameArg(args);
|
|
317
|
-
runTui(name).catch(
|
|
318
|
-
console.error(err);
|
|
319
|
-
process.exit(1);
|
|
320
|
-
});
|
|
321
|
+
runTui(name).catch(exitWithError);
|
|
321
322
|
}
|
|
322
323
|
|
|
323
324
|
function runUserCli(cliCommand: string, args: readonly string[]): void {
|
|
324
325
|
const { name, rest } = parseNameArg(args);
|
|
325
|
-
runCli(cliCommand, rest, name).catch(
|
|
326
|
-
console.error(err);
|
|
327
|
-
process.exit(1);
|
|
328
|
-
});
|
|
326
|
+
runCli(cliCommand, rest, name).catch(exitWithError);
|
|
329
327
|
}
|
|
330
328
|
|
|
331
329
|
// ---------------------------------------------------------------------------
|
|
@@ -30,6 +30,8 @@ const SALT_BYTES = 16;
|
|
|
30
30
|
const KEY_BYTES = 32;
|
|
31
31
|
/** GCM's specified IV length. */
|
|
32
32
|
const IV_BYTES = 12;
|
|
33
|
+
/** GCM's full-length authentication tag. A shorter tag is weaker evidence that the ciphertext is untouched, and Node accepts one unless the length is pinned, so the length is checked wherever a tag comes from outside. */
|
|
34
|
+
const TAG_BYTES = 16;
|
|
33
35
|
/** The shortest passphrase an export accepts. Twelve characters is the length NCSC and NIST guidance treat as the floor for a passphrase protecting something offline-attackable; the scrypt cost above does the rest. */
|
|
34
36
|
export const MIN_ACCOUNT_PASSPHRASE_LENGTH = 12;
|
|
35
37
|
|
|
@@ -38,6 +40,22 @@ const BUNDLE_AAD = Buffer.from(ACCOUNT_BUNDLE_PREFIX);
|
|
|
38
40
|
|
|
39
41
|
const base64url = z.string().regex(/^[A-Za-z0-9_-]*$/);
|
|
40
42
|
|
|
43
|
+
/** Base64url text that decodes to exactly `bytes` bytes. */
|
|
44
|
+
function base64urlBytes(bytes: number): z.ZodType<string> {
|
|
45
|
+
return base64url.refine(
|
|
46
|
+
(text) => Buffer.from(text, "base64url").length === bytes,
|
|
47
|
+
`must decode to ${String(bytes)} bytes`,
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** The parts of an envelope sealed with AES-256-GCM, each at the length `seal` writes and GCM specifies. */
|
|
52
|
+
const gcmFields = {
|
|
53
|
+
iv: base64urlBytes(IV_BYTES),
|
|
54
|
+
tag: base64urlBytes(TAG_BYTES),
|
|
55
|
+
/** The ciphertext: its length is whatever the plaintext was. */
|
|
56
|
+
ct: base64url,
|
|
57
|
+
};
|
|
58
|
+
|
|
41
59
|
/** What an account export or a join carries: the PEM private key and the name the account asserts for itself, if it has one. */
|
|
42
60
|
export interface AccountContents {
|
|
43
61
|
privateKey: string;
|
|
@@ -80,19 +98,16 @@ function parseContents(plaintext: string, damaged: string): AccountContents {
|
|
|
80
98
|
const passphraseEnvelopeSchema = z
|
|
81
99
|
.object({
|
|
82
100
|
kdf: z.literal("scrypt"),
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
ct: base64url,
|
|
101
|
+
// Exactly what this build writes. Above it, reading a bundle would cost more time and memory than writing one. Below it, a bundle would be accepted at a cost that does not protect the passphrase: every released version has written these parameters and no others, so nothing older is refused by requiring them, and a bundle sealed at a lower cost by another tool is refused.
|
|
102
|
+
n: z.literal(SCRYPT_COST),
|
|
103
|
+
r: z.literal(SCRYPT_BLOCK_SIZE),
|
|
104
|
+
p: z.literal(SCRYPT_PARALLELISM),
|
|
105
|
+
salt: base64urlBytes(SALT_BYTES),
|
|
106
|
+
...gcmFields,
|
|
90
107
|
})
|
|
91
108
|
.strict();
|
|
92
109
|
|
|
93
|
-
const inviteEnvelopeSchema = z
|
|
94
|
-
.object({ iv: base64url, tag: base64url, ct: base64url })
|
|
95
|
-
.strict();
|
|
110
|
+
const inviteEnvelopeSchema = z.object(gcmFields).strict();
|
|
96
111
|
|
|
97
112
|
function seal(
|
|
98
113
|
key: Buffer,
|
|
@@ -109,19 +124,20 @@ function seal(
|
|
|
109
124
|
};
|
|
110
125
|
}
|
|
111
126
|
|
|
112
|
-
/** The plaintext of a sealed envelope, or undefined if the key is wrong or the envelope was altered. */
|
|
127
|
+
/** The plaintext of a sealed envelope, or undefined if the key is wrong or the envelope was altered. The envelope's iv and tag have already been checked to be the lengths `seal` writes, and the cipher is set to accept only a full-length tag as well, so a shortened one cannot authenticate. */
|
|
113
128
|
function open(
|
|
114
129
|
key: Buffer,
|
|
115
130
|
envelope: Readonly<{ iv: string; tag: string; ct: string }>,
|
|
116
131
|
): string | undefined {
|
|
117
|
-
const decipher = createDecipheriv(
|
|
118
|
-
"aes-256-gcm",
|
|
119
|
-
key,
|
|
120
|
-
Buffer.from(envelope.iv, "base64url"),
|
|
121
|
-
);
|
|
122
|
-
decipher.setAAD(BUNDLE_AAD);
|
|
123
|
-
decipher.setAuthTag(Buffer.from(envelope.tag, "base64url"));
|
|
124
132
|
try {
|
|
133
|
+
const decipher = createDecipheriv(
|
|
134
|
+
"aes-256-gcm",
|
|
135
|
+
key,
|
|
136
|
+
Buffer.from(envelope.iv, "base64url"),
|
|
137
|
+
{ authTagLength: TAG_BYTES },
|
|
138
|
+
);
|
|
139
|
+
decipher.setAAD(BUNDLE_AAD);
|
|
140
|
+
decipher.setAuthTag(Buffer.from(envelope.tag, "base64url"));
|
|
125
141
|
return Buffer.concat([
|
|
126
142
|
decipher.update(Buffer.from(envelope.ct, "base64url")),
|
|
127
143
|
decipher.final(),
|
|
@@ -166,7 +182,7 @@ export function sealAccountBundle(
|
|
|
166
182
|
return `${ACCOUNT_BUNDLE_PREFIX}${Buffer.from(JSON.stringify(envelope)).toString("base64url")}`;
|
|
167
183
|
}
|
|
168
184
|
|
|
169
|
-
/** The account contents a bundle holds. Throws INVALID_BUNDLE for text that is not a bundle this build can read, and WRONG_PASSPHRASE when the passphrase does not open it. The cost parameters
|
|
185
|
+
/** The account contents a bundle holds. Throws INVALID_BUNDLE for text that is not a bundle this build can read (including one whose cost parameters, salt, iv or authentication tag are not in the form this build writes), and WRONG_PASSPHRASE when the passphrase does not open it. The cost parameters in the bundle must be exactly the ones this build writes, so reading a bundle costs no more than writing one, no weak derivation is accepted, and nothing fails with a raw error. */
|
|
170
186
|
export function openAccountBundle(
|
|
171
187
|
bundle: string,
|
|
172
188
|
passphrase: string,
|
|
@@ -187,12 +203,7 @@ export function openAccountBundle(
|
|
|
187
203
|
throw new CommsError("The account bundle is damaged", "INVALID_BUNDLE");
|
|
188
204
|
}
|
|
189
205
|
const envelope = passphraseEnvelopeSchema.safeParse(decoded);
|
|
190
|
-
if (
|
|
191
|
-
!envelope.success ||
|
|
192
|
-
envelope.data.n > SCRYPT_COST ||
|
|
193
|
-
envelope.data.r > SCRYPT_BLOCK_SIZE ||
|
|
194
|
-
envelope.data.p > SCRYPT_PARALLELISM
|
|
195
|
-
) {
|
|
206
|
+
if (!envelope.success) {
|
|
196
207
|
throw new CommsError("The account bundle is damaged", "INVALID_BUNDLE");
|
|
197
208
|
}
|
|
198
209
|
const key = passphraseKey(
|
package/src/core/account-join.ts
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
import type { GatewayTrust } from "./gateway-trust.js";
|
|
27
27
|
import type { MeshStoreIdentity } from "./mesh-store-shared.js";
|
|
28
28
|
import { parseDisplayName } from "./display-name.js";
|
|
29
|
+
import { parseIsoTimestampMs } from "./iso-timestamp.js";
|
|
29
30
|
import { isDeviceIdHex } from "./room-path.js";
|
|
30
31
|
import { CommsError, requireDisplayName } from "./store.js";
|
|
31
32
|
import type { MeshTransport } from "./transport.js";
|
|
@@ -187,7 +188,8 @@ export class AccountJoin {
|
|
|
187
188
|
private pruneExpired(): void {
|
|
188
189
|
const now = this.deps.requireIdentity().clock.now();
|
|
189
190
|
for (const [nonce, invite] of this.invites) {
|
|
190
|
-
|
|
191
|
+
const expiresAtMs = parseIsoTimestampMs(invite.secret.expiresAt);
|
|
192
|
+
if (expiresAtMs !== undefined && expiresAtMs > now) continue;
|
|
191
193
|
this.invites.delete(nonce);
|
|
192
194
|
invite.settle("expired");
|
|
193
195
|
}
|
|
@@ -232,7 +234,7 @@ export class AccountJoin {
|
|
|
232
234
|
}
|
|
233
235
|
const contents = openAccountKeyFromInvite(sealed, candidate);
|
|
234
236
|
const current = this.deps.requireIdentity();
|
|
235
|
-
const { identity, replacedFile } = importAccountKey(
|
|
237
|
+
const { identity, replacedFile } = await importAccountKey(
|
|
236
238
|
current.userIdentityOptions,
|
|
237
239
|
contents,
|
|
238
240
|
);
|
|
@@ -243,6 +245,7 @@ export class AccountJoin {
|
|
|
243
245
|
userIdentityOptions: current.userIdentityOptions,
|
|
244
246
|
userIdentity: identity,
|
|
245
247
|
clock: current.clock,
|
|
248
|
+
onDamagedEntry: current.accountLedger.reportDamagedEntry,
|
|
246
249
|
}),
|
|
247
250
|
});
|
|
248
251
|
this.trustOwnAccount();
|
|
@@ -138,7 +138,10 @@ export function openLedgerEntry(
|
|
|
138
138
|
}
|
|
139
139
|
const iv = sealed.subarray(VERSION_BYTES, VERSION_BYTES + IV_BYTES);
|
|
140
140
|
const tag = sealed.subarray(VERSION_BYTES + IV_BYTES, headerBytes);
|
|
141
|
-
|
|
141
|
+
// The tag is the fixed TAG_BYTES slice above; pinning the length as well means Node can never accept a shortened one if the layout changes.
|
|
142
|
+
const decipher = createDecipheriv("aes-256-gcm", keys.entryKey, iv, {
|
|
143
|
+
authTagLength: TAG_BYTES,
|
|
144
|
+
});
|
|
142
145
|
decipher.setAAD(associatedData(logId, seq));
|
|
143
146
|
decipher.setAuthTag(tag);
|
|
144
147
|
try {
|
|
@@ -7,7 +7,10 @@ import { createNodeFsStorage } from "wire-mesh-core/adapters/node-fs-storage";
|
|
|
7
7
|
import { deviceIdToHex } from "wire-mesh-core/domain/device-id";
|
|
8
8
|
import type { Clock } from "wire-mesh-core/ports/clock";
|
|
9
9
|
import { generateWriterNonce } from "./account-ledger-crypto.js";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
AccountLedger,
|
|
12
|
+
type LedgerEntryDamagedError,
|
|
13
|
+
} from "./account-ledger.js";
|
|
11
14
|
import type { PeerIdentity } from "./identity.js";
|
|
12
15
|
import { createFileLedgerLock } from "./ledger-lock.js";
|
|
13
16
|
import {
|
|
@@ -24,6 +27,8 @@ export interface OpenAccountLedgerOptions {
|
|
|
24
27
|
/** The account's identity as loadOrCreateUserIdentity returned it. */
|
|
25
28
|
userIdentity: Readonly<PeerIdentity>;
|
|
26
29
|
clock: Clock;
|
|
30
|
+
/** Where an unreadable ledger entry is reported; see AccountLedgerDeps.onDamagedEntry. */
|
|
31
|
+
onDamagedEntry?: ((error: LedgerEntryDamagedError) => void) | undefined;
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
/** The directory an account's ledger is stored in on this machine. Named by the account's device-id, so a machine that imports a different account starts that account's ledger afresh instead of mixing two accounts' logs. */
|
|
@@ -49,18 +54,21 @@ export async function openAccountLedger(
|
|
|
49
54
|
);
|
|
50
55
|
const ledger = new AccountLedger({
|
|
51
56
|
accountPrivateKey: options.userIdentity.privateKey,
|
|
52
|
-
writerNonce: loadOrCreateLedgerWriterNonce(
|
|
57
|
+
writerNonce: await loadOrCreateLedgerWriterNonce(
|
|
53
58
|
options.userIdentityOptions,
|
|
54
59
|
generateWriterNonce,
|
|
55
60
|
),
|
|
56
61
|
storage: createNodeFsStorage({ dir }),
|
|
57
62
|
lock: createFileLedgerLock(`${dir}.lock`),
|
|
58
63
|
clock: options.clock,
|
|
64
|
+
...(options.onDamagedEntry !== undefined && {
|
|
65
|
+
onDamagedEntry: options.onDamagedEntry,
|
|
66
|
+
}),
|
|
59
67
|
});
|
|
60
68
|
const legacy = readLegacyIssuedGrants(options.userIdentityOptions);
|
|
61
69
|
if (legacy.length > 0) {
|
|
62
70
|
await ledger.recordGrants(legacy);
|
|
63
|
-
clearLegacyIssuedGrants(options.userIdentityOptions, legacy);
|
|
71
|
+
await clearLegacyIssuedGrants(options.userIdentityOptions, legacy);
|
|
64
72
|
}
|
|
65
73
|
return ledger;
|
|
66
74
|
}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Each machine appends to a writer log of its own rather than all of them sharing one: a data-domain log is single-writer, and two machines appending to one log while apart would both write the same sequence number and fork it, silently losing one side's grants. A writer log's id is self-authenticating (account-ledger-crypto.ts), so any account holder recognises every writer log it is offered without a roster, and the ledger is the union of all of them.
|
|
5
5
|
*
|
|
6
6
|
* Holding a replica grants no authority: an entry is sealed under a key derived from the account key, so a replica held by anyone else is ciphertext they can neither read nor forge, and minting or revoking still needs the account's private key.
|
|
7
|
+
*
|
|
8
|
+
* A single entry that cannot be read never blocks the rest of the ledger. Revoking is the operation the ledger exists for, and storage can lose or damage an entry, so an unreadable entry that stopped listing and revoking would turn one damaged file into a permanent inability to revoke anything for that account. Each unreadable entry is instead skipped, and a skipped entry is never silent: it is reported once per ledger as a LedgerEntryDamagedError (to `onDamagedEntry`, stderr by default), naming its log and position, listed by `unreadableEntries()` for `whoami`, and counted in the result of every read that met it (`outstandingGrantsChecked` and `revocations`), so a caller that revokes can tell its outcome is incomplete. An unreadable entry may hold a grant or a revocation: a grant recorded only in it is not listed, so it is not revoked, and a revocation recorded only in it is not applied by this machine, until the entry is repaired or replaced from another machine's replica. Revocations in the readable entries are still applied, and a revocation announced over the mesh still reaches the store.
|
|
7
9
|
*/
|
|
8
10
|
|
|
9
11
|
import {
|
|
@@ -101,6 +103,36 @@ export interface AccountLedgerDeps {
|
|
|
101
103
|
/** Serialises every read and write of `storage` across every bridge sharing it: appends to this machine's writer log, replicated entries stored for another machine's, and every read of either. The store's writes are not atomic (a file is truncated, then written), so a read racing another bridge's write could see an empty head and treat a log as empty. */
|
|
102
104
|
lock: LedgerLock;
|
|
103
105
|
clock: Clock;
|
|
106
|
+
/** Called once for each ledger entry that could not be read. Defaults to a line on stderr. */
|
|
107
|
+
onDamagedEntry?: (error: LedgerEntryDamagedError) => void;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Why an entry that opened under the account key is unreadable. Fixed text: the decoder's own message can quote the entry's content, and the report is printed whole. */
|
|
111
|
+
export const UNDECODABLE_REASON =
|
|
112
|
+
"its content is not a record this build can decode";
|
|
113
|
+
|
|
114
|
+
/** A ledger entry that is stored but cannot be read: it does not open under the account's key for its log and position, or what it holds is not a record this build can decode. */
|
|
115
|
+
export class LedgerEntryDamagedError extends Error {
|
|
116
|
+
constructor(
|
|
117
|
+
/** The writer log the entry belongs to, as hex. */
|
|
118
|
+
public readonly log: string,
|
|
119
|
+
/** The entry's position in that log, counting from one. */
|
|
120
|
+
public readonly seq: number,
|
|
121
|
+
/** Why it could not be read. */
|
|
122
|
+
public readonly reason: string,
|
|
123
|
+
) {
|
|
124
|
+
super(
|
|
125
|
+
`account ledger entry ${String(seq)} of writer log ${log} cannot be read (${reason}); it was skipped, so a grant or a revocation recorded only in it is not read: such a grant is not listed or revoked, and such a revocation is not applied here, until the entry is repaired or replaced from another machine's replica of this account`,
|
|
126
|
+
);
|
|
127
|
+
this.name = "LedgerEntryDamagedError";
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** The default place an unreadable ledger entry is reported: one line on stderr. */
|
|
132
|
+
export function reportDamagedEntryToStderr(
|
|
133
|
+
error: Readonly<LedgerEntryDamagedError>,
|
|
134
|
+
): void {
|
|
135
|
+
process.stderr.write(`agent-comms: ${error.message}\n`);
|
|
104
136
|
}
|
|
105
137
|
|
|
106
138
|
/** Answers and stores the data-domain frames for the account's writer logs; what a transport needs of the ledger to replicate it. */
|
|
@@ -113,16 +145,36 @@ export interface AccountLedgerReplica {
|
|
|
113
145
|
) => Promise<DataHaveFrame | DataRequestFrame | DataEntriesFrame | null>;
|
|
114
146
|
/** A data-have for every account log this machine holds, to offer peers. */
|
|
115
147
|
announcements: () => Promise<DataHaveFrame[]>;
|
|
148
|
+
/** The stored entries that could not be read, as far as reads so far have found. */
|
|
149
|
+
unreadableEntries: () => readonly LedgerEntryDamagedError[];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** What a read of the ledger could not read: the number of stored entries that were skipped because they cannot be opened or decoded. Zero means the read was complete. */
|
|
153
|
+
export interface LedgerGaps {
|
|
154
|
+
unreadable: number;
|
|
116
155
|
}
|
|
117
156
|
|
|
118
157
|
const versionProbeSchema = z.object({ v: z.number() });
|
|
119
158
|
|
|
120
159
|
const HEAD_KEY_PATTERN = /^data\/([0-9a-f]+)\/head$/;
|
|
121
160
|
|
|
161
|
+
/** Where a store's unreadable ledger entries are reported: its own error handler once it has one, otherwise stderr, since a handler that is not assigned yet or not at all must not make an entry that can hide a grant go unreported. `getOnError` is read on every report. */
|
|
162
|
+
export function damagedEntryReporter(
|
|
163
|
+
getOnError: () => ((error: Error) => void) | undefined,
|
|
164
|
+
): (error: LedgerEntryDamagedError) => void {
|
|
165
|
+
return (error) => {
|
|
166
|
+
(getOnError() ?? reportDamagedEntryToStderr)(error);
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
122
170
|
export class AccountLedger implements AccountLedgerReplica {
|
|
123
171
|
/** This machine's own writer log. */
|
|
124
172
|
readonly writerLog: DeviceId;
|
|
173
|
+
/** Where this ledger reports an entry it cannot read; also what a ledger opened for another account on the same machine is given, so the destination follows the store and not the account. */
|
|
174
|
+
readonly reportDamagedEntry: (error: LedgerEntryDamagedError) => void;
|
|
125
175
|
private readonly keys: AccountLedgerKeys;
|
|
176
|
+
/** Every entry a read has found unreadable, keyed by log and position, each reported once. */
|
|
177
|
+
private readonly damaged = new Map<string, LedgerEntryDamagedError>();
|
|
126
178
|
private readonly revocationListeners = new Set<
|
|
127
179
|
(entry: RevocationEntry) => void
|
|
128
180
|
>();
|
|
@@ -130,6 +182,7 @@ export class AccountLedger implements AccountLedgerReplica {
|
|
|
130
182
|
constructor(private readonly deps: Readonly<AccountLedgerDeps>) {
|
|
131
183
|
this.keys = deriveAccountLedgerKeys(deps.accountPrivateKey);
|
|
132
184
|
this.writerLog = writerLogId(this.keys, deps.writerNonce);
|
|
185
|
+
this.reportDamagedEntry = deps.onDamagedEntry ?? reportDamagedEntryToStderr;
|
|
133
186
|
}
|
|
134
187
|
|
|
135
188
|
/** Records that the principal minted `tokenId` for `subjectHex`. */
|
|
@@ -191,14 +244,23 @@ export class AccountLedger implements AccountLedgerReplica {
|
|
|
191
244
|
]);
|
|
192
245
|
}
|
|
193
246
|
|
|
194
|
-
/** Every grant of `kind` for `subjectHex` that some machine of the account recorded and none has revoked, oldest first. */
|
|
247
|
+
/** Every grant of `kind` for `subjectHex` that some machine of the account recorded and none has revoked, oldest first, among the entries that can be read. A caller that goes on to revoke uses outstandingGrantsChecked, which also says whether entries were skipped. */
|
|
195
248
|
async outstandingGrants(
|
|
196
249
|
kind: IssuedGrantKind,
|
|
197
250
|
subjectHex: string,
|
|
198
251
|
): Promise<OutstandingGrant[]> {
|
|
252
|
+
return (await this.outstandingGrantsChecked(kind, subjectHex)).grants;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/** outstandingGrants with the number of entries the read had to skip: when it is above zero, a grant recorded only in a skipped entry is not in `grants`, and revoking `grants` does not make the subject safe. */
|
|
256
|
+
async outstandingGrantsChecked(
|
|
257
|
+
kind: IssuedGrantKind,
|
|
258
|
+
subjectHex: string,
|
|
259
|
+
): Promise<{ grants: OutstandingGrant[] } & LedgerGaps> {
|
|
199
260
|
const granted = new Map<string, OutstandingGrant>();
|
|
200
261
|
const revoked = new Set<string>();
|
|
201
|
-
|
|
262
|
+
const { records, unreadable } = await this.records();
|
|
263
|
+
for (const record of records) {
|
|
202
264
|
if (record.kind !== kind || record.subject !== subjectHex) continue;
|
|
203
265
|
const key = Buffer.from(record.tokenId).toString("hex");
|
|
204
266
|
if (record.op === "revoke") {
|
|
@@ -210,17 +272,28 @@ export class AccountLedger implements AccountLedgerReplica {
|
|
|
210
272
|
});
|
|
211
273
|
}
|
|
212
274
|
}
|
|
213
|
-
return
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
275
|
+
return {
|
|
276
|
+
grants: [...granted]
|
|
277
|
+
.filter(([key]) => !revoked.has(key))
|
|
278
|
+
.map(([, grant]) => grant)
|
|
279
|
+
.sort((a, b) => a.at - b.at),
|
|
280
|
+
unreadable,
|
|
281
|
+
};
|
|
217
282
|
}
|
|
218
283
|
|
|
219
|
-
/** Every revocation entry the ledger holds, from every machine, for a RevocationView to learn at start-up
|
|
220
|
-
async revocations(): Promise<RevocationEntry[]> {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
284
|
+
/** Every revocation entry the readable part of the ledger holds, from every machine, for a RevocationView to learn at start-up, and how many entries were skipped: a revocation recorded only in one of those is not in `entries`. */
|
|
285
|
+
async revocations(): Promise<{ entries: RevocationEntry[] } & LedgerGaps> {
|
|
286
|
+
const { records, unreadable } = await this.records();
|
|
287
|
+
return {
|
|
288
|
+
entries: records.flatMap((record) =>
|
|
289
|
+
record.op === "revoke" ? [record.revocation] : [],
|
|
290
|
+
),
|
|
291
|
+
unreadable,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
unreadableEntries(): readonly LedgerEntryDamagedError[] {
|
|
296
|
+
return [...this.damaged.values()];
|
|
224
297
|
}
|
|
225
298
|
|
|
226
299
|
ownsLog(peer: DeviceId): boolean {
|
|
@@ -274,8 +347,12 @@ export class AccountLedger implements AccountLedgerReplica {
|
|
|
274
347
|
handleDataEntries(storage, frame),
|
|
275
348
|
);
|
|
276
349
|
if (!stored.ok) return null;
|
|
277
|
-
for (const plaintext of plaintexts) {
|
|
278
|
-
const record =
|
|
350
|
+
for (const [index, plaintext] of plaintexts.entries()) {
|
|
351
|
+
const record = this.decodeOrReport(
|
|
352
|
+
frame.peer,
|
|
353
|
+
firstSeq + index,
|
|
354
|
+
plaintext,
|
|
355
|
+
);
|
|
279
356
|
if (record?.op !== "revoke") continue;
|
|
280
357
|
for (const listener of this.revocationListeners) {
|
|
281
358
|
listener(record.revocation);
|
|
@@ -316,8 +393,34 @@ export class AccountLedger implements AccountLedgerReplica {
|
|
|
316
393
|
return logs;
|
|
317
394
|
}
|
|
318
395
|
|
|
319
|
-
/**
|
|
320
|
-
private
|
|
396
|
+
/** The record an entry holds, or undefined after noting why it cannot be read (or, silently, for a record of a later format version). */
|
|
397
|
+
private decodeOrReport(
|
|
398
|
+
log: DeviceId,
|
|
399
|
+
seq: number,
|
|
400
|
+
plaintext: Uint8Array,
|
|
401
|
+
): LedgerRecord | undefined {
|
|
402
|
+
try {
|
|
403
|
+
return decodeRecord(plaintext);
|
|
404
|
+
} catch {
|
|
405
|
+
this.noteDamaged(log, seq, UNDECODABLE_REASON);
|
|
406
|
+
return undefined;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/** Remembers an unreadable entry and reports it the first time it is met. */
|
|
411
|
+
private noteDamaged(log: DeviceId, seq: number, reason: string): void {
|
|
412
|
+
const hex = deviceIdToHex(log);
|
|
413
|
+
const key = `${hex}:${String(seq)}`;
|
|
414
|
+
if (this.damaged.has(key)) return;
|
|
415
|
+
const error = new LedgerEntryDamagedError(hex, seq, reason);
|
|
416
|
+
this.damaged.set(key, error);
|
|
417
|
+
this.reportDamagedEntry(error);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/** Every readable record in every held writer log, in the order stored, and how many entries were skipped. An entry that cannot be read is noted and skipped (see the module comment for why that is not a failure). handleDataFrame and append never store one, so it means the storage was damaged outside the ledger or a holder of the account key wrote one this build cannot decode. */
|
|
421
|
+
private async records(): Promise<
|
|
422
|
+
{ records: LedgerRecord[] } & { unreadable: number }
|
|
423
|
+
> {
|
|
321
424
|
const held = await this.deps.lock.run(async () =>
|
|
322
425
|
Promise.all(
|
|
323
426
|
(await this.heldLogs()).map(async (log) => ({
|
|
@@ -327,20 +430,32 @@ export class AccountLedger implements AccountLedgerReplica {
|
|
|
327
430
|
),
|
|
328
431
|
);
|
|
329
432
|
const records: LedgerRecord[] = [];
|
|
433
|
+
let unreadable = 0;
|
|
330
434
|
for (const { log, entries } of held) {
|
|
331
435
|
entries.forEach((sealed, index) => {
|
|
332
436
|
const seq = index + 1;
|
|
333
437
|
const plaintext = openLedgerEntry(this.keys, log, seq, sealed);
|
|
334
438
|
if (plaintext === undefined) {
|
|
335
|
-
|
|
336
|
-
|
|
439
|
+
this.noteDamaged(
|
|
440
|
+
log,
|
|
441
|
+
seq,
|
|
442
|
+
"it does not open under this account's key",
|
|
337
443
|
);
|
|
444
|
+
unreadable += 1;
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
let record: LedgerRecord | undefined;
|
|
448
|
+
try {
|
|
449
|
+
record = decodeRecord(plaintext);
|
|
450
|
+
} catch {
|
|
451
|
+
this.noteDamaged(log, seq, UNDECODABLE_REASON);
|
|
452
|
+
unreadable += 1;
|
|
453
|
+
return;
|
|
338
454
|
}
|
|
339
|
-
const record = decodeRecord(plaintext);
|
|
340
455
|
if (record !== undefined) records.push(record);
|
|
341
456
|
});
|
|
342
457
|
}
|
|
343
|
-
return records;
|
|
458
|
+
return { records, unreadable };
|
|
344
459
|
}
|
|
345
460
|
}
|
|
346
461
|
|
|
@@ -378,8 +493,15 @@ export function followLedgerRevocations(
|
|
|
378
493
|
}, report);
|
|
379
494
|
};
|
|
380
495
|
const unsubscribe = identity.accountLedger.onReplicatedRevocation(learn);
|
|
381
|
-
identity.accountLedger.revocations().then((entries) => {
|
|
496
|
+
identity.accountLedger.revocations().then(({ entries, unreadable }) => {
|
|
382
497
|
entries.forEach(learn);
|
|
498
|
+
if (unreadable > 0) {
|
|
499
|
+
report(
|
|
500
|
+
new Error(
|
|
501
|
+
`${String(unreadable)} account ledger entries cannot be read, so a revocation recorded only in them is not applied on this machine until they are repaired or replaced from another machine's replica`,
|
|
502
|
+
),
|
|
503
|
+
);
|
|
504
|
+
}
|
|
383
505
|
}, report);
|
|
384
506
|
return unsubscribe;
|
|
385
507
|
}
|
package/src/core/bridge-mesh.ts
CHANGED
|
@@ -24,6 +24,7 @@ import { FIRST_CONTACT_PORT } from "./first-contact.js";
|
|
|
24
24
|
import { CommsTool } from "./tool.js";
|
|
25
25
|
import { WireMeshTransport } from "./wire-mesh-transport.js";
|
|
26
26
|
import { loadOrCreateIdentity, oplogDirFor } from "./identity-store.js";
|
|
27
|
+
import { damagedEntryReporter } from "./account-ledger.js";
|
|
27
28
|
import { openAccountLedger } from "./account-ledger-store.js";
|
|
28
29
|
import type { IdentitySlot } from "./identity-store.js";
|
|
29
30
|
import { toIdentityPort } from "./wire-mesh-identity.js";
|
|
@@ -126,6 +127,8 @@ export function createBridgeMeshSyncFromIdentity(
|
|
|
126
127
|
discovery: store.discovery,
|
|
127
128
|
naming: store.naming,
|
|
128
129
|
getNewerVersionIfAny: () => versionChecker.getNewerVersionIfAny(),
|
|
130
|
+
getUnreadableLedgerEntries: () =>
|
|
131
|
+
store.accountLedger?.unreadableEntries().length ?? 0,
|
|
129
132
|
});
|
|
130
133
|
const revocation = createRevocationView();
|
|
131
134
|
return {
|
|
@@ -144,6 +147,7 @@ export function createBridgeMeshSyncFromIdentity(
|
|
|
144
147
|
userIdentityOptions,
|
|
145
148
|
userIdentity,
|
|
146
149
|
clock,
|
|
150
|
+
onDamagedEntry: damagedEntryReporter(() => store.onError),
|
|
147
151
|
}),
|
|
148
152
|
userIdentityOptions,
|
|
149
153
|
machineIdentity: await toIdentityPort(machineIdentity),
|
package/src/core/bridge.ts
CHANGED
|
@@ -117,19 +117,39 @@ export const MCP_TOOL_PARAMS = z.object({
|
|
|
117
117
|
/** A remote gateway's own device-id (hex), for gateway_trust/gateway_untrust, for gateway_redeem_connection_code (the code's own embedded deviceId field), and the device-id petname_set/petname_clear label. */
|
|
118
118
|
device: z.string().optional(),
|
|
119
119
|
/** The connection code's own nonce (gateway_redeem_connection_code). */
|
|
120
|
-
code: z
|
|
120
|
+
code: z
|
|
121
|
+
.string()
|
|
122
|
+
.optional()
|
|
123
|
+
.describe(
|
|
124
|
+
"gateway_redeem_connection_code: the code's nonce. An unsigned connection code is a bearer hint, not authentication: redeeming it trusts whatever device-id its text names, whoever wrote it, so it is not a way to establish trust in a stranger. Supply publicKey or fingerprint to require a signature from a key you already trust.",
|
|
125
|
+
),
|
|
121
126
|
/** ISO-8601 expiry for gateway_generate_connection_code's ttlMs override, or the redeemed code's own expiresAt field for gateway_redeem_connection_code. */
|
|
122
127
|
expiresAt: z.string().optional(),
|
|
123
128
|
/** ttlMs override for gateway_generate_connection_code; defaults to DEFAULT_CONNECTION_CODE_TTL_MS when omitted. */
|
|
124
129
|
ttlMs: z.number().optional(),
|
|
125
130
|
/** Armored PGP private key to sign a generated code with (gateway_generate_connection_code), or armored PGP public key to verify a redeemed code's signature against (gateway_redeem_connection_code). Both are supplied per call -- agent-comms never generates, stores, or manages PGP key material itself. */
|
|
126
131
|
privateKey: z.string().optional(),
|
|
127
|
-
publicKey: z
|
|
132
|
+
publicKey: z
|
|
133
|
+
.string()
|
|
134
|
+
.optional()
|
|
135
|
+
.describe(
|
|
136
|
+
"gateway_redeem_connection_code: armored PGP public key to verify the code's signature against. Supplying it makes an unsigned code refused.",
|
|
137
|
+
),
|
|
128
138
|
/** Passphrase for privateKey, if it is passphrase-protected (gateway_generate_connection_code). */
|
|
129
139
|
passphrase: z.string().optional(),
|
|
130
140
|
/** The redeemed code's own signature field (gateway_redeem_connection_code), or a PGP fingerprint the caller already independently trusts, used either to pin a supplied publicKey or to fetch one from a keyserver when publicKey is omitted. */
|
|
131
|
-
signature: z
|
|
132
|
-
|
|
141
|
+
signature: z
|
|
142
|
+
.string()
|
|
143
|
+
.optional()
|
|
144
|
+
.describe(
|
|
145
|
+
"gateway_redeem_connection_code: the code's detached PGP signature, when it has one.",
|
|
146
|
+
),
|
|
147
|
+
fingerprint: z
|
|
148
|
+
.string()
|
|
149
|
+
.optional()
|
|
150
|
+
.describe(
|
|
151
|
+
"gateway_redeem_connection_code: a PGP fingerprint you already trust. Supplying it makes an unsigned code refused, and the signing key must match it.",
|
|
152
|
+
),
|
|
133
153
|
/** For gateway_trust/gateway_untrust (and dm_admit, where `target` names it): when true, the id names a user principal (agent-comms#187) rather than a bare remote device-id (agent-comms#193). */
|
|
134
154
|
principal: z.boolean().optional(),
|
|
135
155
|
/** For gateway_trust/gateway_untrust: when true, the id names a machine (agent-comms#343), whose devices (every bridge one OS account runs on that host) are trusted or revoked at once. */
|
|
@@ -45,6 +45,8 @@ interface PendingCapabilityAsk {
|
|
|
45
45
|
scope: Readonly<CapabilityScope>;
|
|
46
46
|
requesterDevice: DeviceId;
|
|
47
47
|
decide: (decision: Readonly<CapabilityGrantDecision>) => Promise<void>;
|
|
48
|
+
/** Drops this ask from the pending set when wire-mesh-core's own window for it has passed. */
|
|
49
|
+
expiry: ReturnType<typeof setTimeout>;
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
export class CapabilityAskAdmission {
|
|
@@ -63,21 +65,32 @@ export class CapabilityAskAdmission {
|
|
|
63
65
|
bearerDevice: options.bearerDevice,
|
|
64
66
|
timeoutMs: options.timeoutMs,
|
|
65
67
|
onRequest: (event: Readonly<CapabilityGrantRequestEvent>) => {
|
|
66
|
-
this.handleCapabilityRequest(
|
|
68
|
+
this.handleCapabilityRequest(
|
|
69
|
+
options.capability,
|
|
70
|
+
options.timeoutMs,
|
|
71
|
+
event,
|
|
72
|
+
);
|
|
67
73
|
},
|
|
68
74
|
});
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
private handleCapabilityRequest(
|
|
72
78
|
capability: string,
|
|
79
|
+
timeoutMs: number,
|
|
73
80
|
event: Readonly<CapabilityGrantRequestEvent>,
|
|
74
81
|
): void {
|
|
75
82
|
const requestId = nanoid();
|
|
83
|
+
// wire-mesh-core answers the requester with a timeout once the window passes and ignores any later decision, but never tells this side, so an ask left in the pending set would stay listed and a later accept would report success for a request nobody is waiting on. Its own timer was started just before onRequest ran, so this one, for the same period, fires after it.
|
|
84
|
+
const expiry = setTimeout(() => {
|
|
85
|
+
this.pending.delete(requestId);
|
|
86
|
+
}, timeoutMs);
|
|
87
|
+
expiry.unref();
|
|
76
88
|
this.pending.set(requestId, {
|
|
77
89
|
capability,
|
|
78
90
|
scope: event.scope,
|
|
79
91
|
requesterDevice: event.requesterDevice,
|
|
80
92
|
decide: event.decide,
|
|
93
|
+
expiry,
|
|
81
94
|
});
|
|
82
95
|
|
|
83
96
|
const deliveryEvent: DeliveryEvent = {
|
|
@@ -126,6 +139,7 @@ export class CapabilityAskAdmission {
|
|
|
126
139
|
): Promise<void> {
|
|
127
140
|
const pending = this.requirePending(requestId);
|
|
128
141
|
this.pending.delete(requestId);
|
|
142
|
+
clearTimeout(pending.expiry);
|
|
129
143
|
await pending.decide({
|
|
130
144
|
kind: "accept",
|
|
131
145
|
capability: options.capability ?? pending.capability,
|
|
@@ -143,6 +157,7 @@ export class CapabilityAskAdmission {
|
|
|
143
157
|
): Promise<void> {
|
|
144
158
|
const pending = this.requirePending(requestId);
|
|
145
159
|
this.pending.delete(requestId);
|
|
160
|
+
clearTimeout(pending.expiry);
|
|
146
161
|
await pending.decide({
|
|
147
162
|
kind: "reject",
|
|
148
163
|
...(reason !== undefined ? { reason } : {}),
|