agent-comms 4.3.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +9 -2
  4. package/dist/bridges/user/web/dist/mesh-worker.js +1 -1
  5. package/dist/bridges/user/web/dist/sw.js +1 -1
  6. package/dist/core/agent-registry.d.ts.map +1 -1
  7. package/dist/core/agent-registry.js +2 -0
  8. package/dist/core/agent-registry.js.map +1 -1
  9. package/dist/core/bridge-mesh.d.ts.map +1 -1
  10. package/dist/core/bridge-mesh.js +1 -0
  11. package/dist/core/bridge-mesh.js.map +1 -1
  12. package/dist/core/bridge.d.ts.map +1 -1
  13. package/dist/core/bridge.js +6 -2
  14. package/dist/core/bridge.js.map +1 -1
  15. package/dist/core/device-membership-verification.d.ts +2 -1
  16. package/dist/core/device-membership-verification.d.ts.map +1 -1
  17. package/dist/core/device-membership-verification.js +1 -1
  18. package/dist/core/device-membership-verification.js.map +1 -1
  19. package/dist/core/device-membership.d.ts +2 -0
  20. package/dist/core/device-membership.d.ts.map +1 -1
  21. package/dist/core/device-membership.js +9 -5
  22. package/dist/core/device-membership.js.map +1 -1
  23. package/dist/core/directory-admission.d.ts +20 -0
  24. package/dist/core/directory-admission.d.ts.map +1 -0
  25. package/dist/core/directory-admission.js +88 -0
  26. package/dist/core/directory-admission.js.map +1 -0
  27. package/dist/core/dm-grant-actions.d.ts +2 -2
  28. package/dist/core/dm-grant-actions.d.ts.map +1 -1
  29. package/dist/core/dm-grant-actions.js +10 -5
  30. package/dist/core/dm-grant-actions.js.map +1 -1
  31. package/dist/core/gateway-trust-actions.d.ts +1 -1
  32. package/dist/core/gateway-trust-actions.d.ts.map +1 -1
  33. package/dist/core/gateway-trust-actions.js +5 -1
  34. package/dist/core/gateway-trust-actions.js.map +1 -1
  35. package/dist/core/gateway-trust.d.ts +14 -2
  36. package/dist/core/gateway-trust.d.ts.map +1 -1
  37. package/dist/core/gateway-trust.js +40 -2
  38. package/dist/core/gateway-trust.js.map +1 -1
  39. package/dist/core/gossip-directory.d.ts +2 -0
  40. package/dist/core/gossip-directory.d.ts.map +1 -1
  41. package/dist/core/gossip-directory.js +9 -0
  42. package/dist/core/gossip-directory.js.map +1 -1
  43. package/dist/core/gossip-extensions.d.ts +2 -0
  44. package/dist/core/gossip-extensions.d.ts.map +1 -1
  45. package/dist/core/hub-session.d.ts +3 -3
  46. package/dist/core/hub-session.d.ts.map +1 -1
  47. package/dist/core/hub-session.js +6 -4
  48. package/dist/core/hub-session.js.map +1 -1
  49. package/dist/core/membership-proof.d.ts +45 -0
  50. package/dist/core/membership-proof.d.ts.map +1 -0
  51. package/dist/core/membership-proof.js +59 -0
  52. package/dist/core/membership-proof.js.map +1 -0
  53. package/dist/core/membership-proofs.d.ts +34 -0
  54. package/dist/core/membership-proofs.d.ts.map +1 -0
  55. package/dist/core/membership-proofs.js +66 -0
  56. package/dist/core/membership-proofs.js.map +1 -0
  57. package/dist/core/mesh-store.d.ts +12 -0
  58. package/dist/core/mesh-store.d.ts.map +1 -1
  59. package/dist/core/mesh-store.js +26 -0
  60. package/dist/core/mesh-store.js.map +1 -1
  61. package/dist/core/room-lifecycle.d.ts +6 -0
  62. package/dist/core/room-lifecycle.d.ts.map +1 -1
  63. package/dist/core/room-lifecycle.js +52 -1
  64. package/dist/core/room-lifecycle.js.map +1 -1
  65. package/dist/core/tool.d.ts +10 -3
  66. package/dist/core/tool.d.ts.map +1 -1
  67. package/dist/core/tool.js +2 -0
  68. package/dist/core/tool.js.map +1 -1
  69. package/dist/core/types.d.ts +2 -0
  70. package/dist/core/types.d.ts.map +1 -1
  71. package/dist/core/types.js +6 -1
  72. package/dist/core/types.js.map +1 -1
  73. package/dist/core/wire-mesh-transport-options.d.ts +12 -0
  74. package/dist/core/wire-mesh-transport-options.d.ts.map +1 -1
  75. package/dist/core/wire-mesh-transport.d.ts +1 -1
  76. package/dist/core/wire-mesh-transport.d.ts.map +1 -1
  77. package/dist/core/wire-mesh-transport.js +5 -5
  78. package/dist/core/wire-mesh-transport.js.map +1 -1
  79. package/dist/test/directory-admission.unit.test.d.ts +2 -0
  80. package/dist/test/directory-admission.unit.test.d.ts.map +1 -0
  81. package/dist/test/directory-admission.unit.test.js +182 -0
  82. package/dist/test/directory-admission.unit.test.js.map +1 -0
  83. package/dist/test/dm-grant-actions.unit.test.js +13 -7
  84. package/dist/test/dm-grant-actions.unit.test.js.map +1 -1
  85. package/dist/test/dm-grant-tool.integration.test.js +115 -2
  86. package/dist/test/dm-grant-tool.integration.test.js.map +1 -1
  87. package/dist/test/gateway-trust-tool.integration.test.js +22 -0
  88. package/dist/test/gateway-trust-tool.integration.test.js.map +1 -1
  89. package/dist/test/gateway-trust.unit.test.js +82 -1
  90. package/dist/test/gateway-trust.unit.test.js.map +1 -1
  91. package/dist/test/membership-proof.unit.test.d.ts +2 -0
  92. package/dist/test/membership-proof.unit.test.d.ts.map +1 -0
  93. package/dist/test/membership-proof.unit.test.js +148 -0
  94. package/dist/test/membership-proof.unit.test.js.map +1 -0
  95. package/dist/test/principal-membership-trust.integration.test.d.ts +5 -0
  96. package/dist/test/principal-membership-trust.integration.test.d.ts.map +1 -0
  97. package/dist/test/principal-membership-trust.integration.test.js +169 -0
  98. package/dist/test/principal-membership-trust.integration.test.js.map +1 -0
  99. package/dist/test/test-transport.d.ts.map +1 -1
  100. package/dist/test/test-transport.js +1 -0
  101. package/dist/test/test-transport.js.map +1 -1
  102. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wire-mesh-transport.js","sourceRoot":"","sources":["../../src/core/wire-mesh-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire-mesh-transport.js","sourceRoot":"","sources":["../../src/core/wire-mesh-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=directory-admission.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-admission.unit.test.d.ts","sourceRoot":"","sources":["../../src/test/directory-admission.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Unit tests for directory admission: which gossiped directory entries a gateway merges, given the trust it holds and the membership proofs the entries carry. The verifier is a stub, so what is under test is the admission policy: what is skipped, cached, bounded and survived, not the cryptography (membership-proof.unit.test.ts).
3
+ */
4
+ import { createHash } from "node:crypto";
5
+ import { afterEach, describe, expect, it, vi } from "vitest";
6
+ import { deviceIdFromHex } from "wire-mesh-core/domain/device-id";
7
+ import { MAX_VERIFICATIONS_PER_BATCH, NEGATIVE_VERDICT_TTL_MS, directoryAdmission, } from "../core/directory-admission.js";
8
+ import { GatewayTrust } from "../core/gateway-trust.js";
9
+ /** A device-id is a 64-character lowercase hex SHA-256 digest. */
10
+ const DEVICE_ID_HEX_LENGTH = 64;
11
+ const ONE_HOUR_MS = 3_600_000;
12
+ const PRINCIPAL = "a".repeat(DEVICE_ID_HEX_LENGTH);
13
+ /** How many times over the per-batch verification budget a flood exceeds it. */
14
+ const FLOOD_FACTOR = 3;
15
+ const OTHER_PRINCIPAL = "b".repeat(DEVICE_ID_HEX_LENGTH);
16
+ /** A stable, valid device id for a label, so each test names its devices instead of numbering them. */
17
+ function deviceHex(label) {
18
+ return createHash("sha256").update(label).digest("hex");
19
+ }
20
+ /** An entry whose advert carries `proof` (when given) under agent/self. The cast stands in for the fields of a real advert this policy never reads. */
21
+ function entry(label, proof) {
22
+ const advert = {
23
+ addresses: [],
24
+ "snapshot-seconds": 1,
25
+ "agent/self": proof === undefined ? {} : { membership: proof },
26
+ };
27
+ return { device: deviceIdFromHex(deviceHex(label)), advert };
28
+ }
29
+ function verifier(ok) {
30
+ return vi.fn(async () => Promise.resolve(ok
31
+ ? { ok: true, expires: Date.now() + ONE_HOUR_MS }
32
+ : { ok: false, reason: "wrong_scope_path" }));
33
+ }
34
+ describe("directoryAdmission", () => {
35
+ afterEach(() => {
36
+ vi.useRealTimers();
37
+ });
38
+ it("admits a device trusted by id without looking at any proof", async () => {
39
+ const trust = new GatewayTrust();
40
+ trust.add(deviceHex("trusted-by-id"));
41
+ const verifyMembership = verifier(true);
42
+ const admitted = await directoryAdmission({
43
+ gatewayTrust: trust,
44
+ verifyMembership,
45
+ })([entry("trusted-by-id", "proof")]);
46
+ expect(admitted).toHaveLength(1);
47
+ expect(verifyMembership).not.toHaveBeenCalled();
48
+ });
49
+ it("admits a trusted principal's own device without looking at any proof", async () => {
50
+ const trust = new GatewayTrust();
51
+ trust.addPrincipal(deviceHex("principal-own"));
52
+ const verifyMembership = verifier(true);
53
+ const admitted = await directoryAdmission({
54
+ gatewayTrust: trust,
55
+ verifyMembership,
56
+ })([entry("principal-own")]);
57
+ expect(admitted).toHaveLength(1);
58
+ expect(verifyMembership).not.toHaveBeenCalled();
59
+ });
60
+ it("admits a device whose proof a trusted principal vouches for, and records it as a verified member", async () => {
61
+ const trust = new GatewayTrust();
62
+ trust.addPrincipal(PRINCIPAL);
63
+ const verifyMembership = verifier(true);
64
+ const admitted = await directoryAdmission({
65
+ gatewayTrust: trust,
66
+ verifyMembership,
67
+ })([entry("vouched", "proof-a")]);
68
+ expect(admitted).toHaveLength(1);
69
+ expect(trust.isReachable(deviceHex("vouched"))).toBe(true);
70
+ expect(trust.isTrusted(deviceHex("vouched"))).toBe(false);
71
+ });
72
+ it("tries each trusted principal in turn and stops at the one that vouches", async () => {
73
+ const trust = new GatewayTrust();
74
+ trust.addPrincipal(OTHER_PRINCIPAL);
75
+ trust.addPrincipal(PRINCIPAL);
76
+ const verifyMembership = vi.fn(async (claim) => Promise.resolve(claim.principalHex === PRINCIPAL
77
+ ? { ok: true, expires: Date.now() + ONE_HOUR_MS }
78
+ : { ok: false, reason: "wrong_scope_path" }));
79
+ await directoryAdmission({ gatewayTrust: trust, verifyMembership })([
80
+ entry("two-principals", "proof-a"),
81
+ ]);
82
+ expect(verifyMembership).toHaveBeenCalledTimes(2);
83
+ expect(trust.listVerifiedMembers()).toEqual([
84
+ { device: deviceHex("two-principals"), principal: PRINCIPAL },
85
+ ]);
86
+ });
87
+ it("does not verify the same proof again while the device is still a verified member", async () => {
88
+ const trust = new GatewayTrust();
89
+ trust.addPrincipal(PRINCIPAL);
90
+ const verifyMembership = verifier(true);
91
+ const admit = directoryAdmission({ gatewayTrust: trust, verifyMembership });
92
+ await admit([entry("same-proof", "proof-a")]);
93
+ await admit([entry("same-proof", "proof-a")]);
94
+ expect(verifyMembership).toHaveBeenCalledTimes(1);
95
+ });
96
+ it("verifies a device's new proof even while its old one is still good, so its trust is renewed before the old one lapses", async () => {
97
+ const trust = new GatewayTrust();
98
+ trust.addPrincipal(PRINCIPAL);
99
+ const verifyMembership = verifier(true);
100
+ const admit = directoryAdmission({ gatewayTrust: trust, verifyMembership });
101
+ await admit([entry("renewed", "proof-a")]);
102
+ await admit([entry("renewed", "proof-b")]);
103
+ expect(verifyMembership).toHaveBeenCalledTimes(2);
104
+ });
105
+ it("refuses a device whose proof no trusted principal vouches for, and does not re-verify that proof for a while", async () => {
106
+ vi.useFakeTimers();
107
+ const trust = new GatewayTrust();
108
+ trust.addPrincipal(PRINCIPAL);
109
+ const verifyMembership = verifier(false);
110
+ const admit = directoryAdmission({ gatewayTrust: trust, verifyMembership });
111
+ expect(await admit([entry("refused", "bad")])).toEqual([]);
112
+ expect(await admit([entry("refused", "bad")])).toEqual([]);
113
+ expect(verifyMembership).toHaveBeenCalledTimes(1);
114
+ vi.advanceTimersByTime(NEGATIVE_VERDICT_TTL_MS + 1);
115
+ await admit([entry("refused", "bad")]);
116
+ expect(verifyMembership).toHaveBeenCalledTimes(2);
117
+ });
118
+ it("refuses a device with no proof, and never asks the verifier", async () => {
119
+ const trust = new GatewayTrust();
120
+ trust.addPrincipal(PRINCIPAL);
121
+ const verifyMembership = verifier(true);
122
+ const admitted = await directoryAdmission({
123
+ gatewayTrust: trust,
124
+ verifyMembership,
125
+ })([entry("no-proof")]);
126
+ expect(admitted).toEqual([]);
127
+ expect(verifyMembership).not.toHaveBeenCalled();
128
+ });
129
+ it("refuses a proof when this side has no way to verify one", async () => {
130
+ const trust = new GatewayTrust();
131
+ trust.addPrincipal(PRINCIPAL);
132
+ const admitted = await directoryAdmission({
133
+ gatewayTrust: trust,
134
+ verifyMembership: undefined,
135
+ })([entry("no-verifier", "proof-a")]);
136
+ expect(admitted).toEqual([]);
137
+ });
138
+ it("survives a principal the verifier throws on, and still tries the others", async () => {
139
+ const trust = new GatewayTrust();
140
+ trust.addPrincipal("not-a-device-id");
141
+ trust.addPrincipal(PRINCIPAL);
142
+ const verifyMembership = vi.fn(async (claim) => {
143
+ if (claim.principalHex === "not-a-device-id") {
144
+ throw new Error("expected a 64-character lowercase hex string");
145
+ }
146
+ return Promise.resolve({ ok: true, expires: Date.now() + ONE_HOUR_MS });
147
+ });
148
+ const admitted = await directoryAdmission({
149
+ gatewayTrust: trust,
150
+ verifyMembership,
151
+ })([entry("bad-principal", "proof-a")]);
152
+ expect(admitted).toHaveLength(1);
153
+ });
154
+ it("survives a verifier that always throws, refusing the entry instead of rejecting", async () => {
155
+ const trust = new GatewayTrust();
156
+ trust.addPrincipal(PRINCIPAL);
157
+ const verifyMembership = vi.fn(async () => Promise.reject(new Error("no identity set")));
158
+ await expect(directoryAdmission({ gatewayTrust: trust, verifyMembership })([
159
+ entry("verifier-throws", "proof-a"),
160
+ ])).resolves.toEqual([]);
161
+ });
162
+ it("verifies only a bounded number of new proofs per batch, so a flood of adverts costs a bounded amount of work", async () => {
163
+ const trust = new GatewayTrust();
164
+ trust.addPrincipal(PRINCIPAL);
165
+ const verifyMembership = verifier(false);
166
+ const flood = Array.from({ length: MAX_VERIFICATIONS_PER_BATCH * FLOOD_FACTOR }, (_, index) => entry(`flood-${String(index)}`, `proof-${String(index)}`));
167
+ await directoryAdmission({ gatewayTrust: trust, verifyMembership })(flood);
168
+ expect(verifyMembership).toHaveBeenCalledTimes(MAX_VERIFICATIONS_PER_BATCH);
169
+ });
170
+ it("still admits trusted devices in a batch that is otherwise a flood", async () => {
171
+ const trust = new GatewayTrust();
172
+ trust.addPrincipal(PRINCIPAL);
173
+ trust.add(deviceHex("trusted-in-flood"));
174
+ const flood = Array.from({ length: MAX_VERIFICATIONS_PER_BATCH * FLOOD_FACTOR }, (_, index) => entry(`flood-${String(index)}`, `proof-${String(index)}`));
175
+ const admitted = await directoryAdmission({
176
+ gatewayTrust: trust,
177
+ verifyMembership: verifier(false),
178
+ })([...flood, entry("trusted-in-flood")]);
179
+ expect(admitted).toHaveLength(1);
180
+ });
181
+ });
182
+ //# sourceMappingURL=directory-admission.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-admission.unit.test.js","sourceRoot":"","sources":["../../src/test/directory-admission.unit.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,kEAAkE;AAClE,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACnD,gFAAgF;AAChF,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEzD,uGAAuG;AACvG,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,uJAAuJ;AACvJ,SAAS,KAAK,CAAC,KAAa,EAAE,KAAc;IAC1C,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,EAAE;QACb,kBAAkB,EAAE,CAAC;QACrB,YAAY,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;KACtC,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAC/D,CAAC;AAMD,SAAS,QAAQ,CAAC,EAAW;IAC3B,OAAO,EAAE,CAAC,EAAE,CAAS,KAAK,IAAI,EAAE,CAC9B,OAAO,CAAC,OAAO,CACb,EAAE;QACA,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE;QACjD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAC9C,CACF,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;QACtC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK;YACnB,gBAAgB;SACjB,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK;YACnB,gBAAgB;SACjB,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kGAAkG,EAAE,KAAK,IAAI,EAAE;QAChH,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK;YACnB,gBAAgB;SACjB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACpC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAS,KAAK,EAAE,KAAK,EAAE,EAAE,CACrD,OAAO,CAAC,OAAO,CACb,KAAK,CAAC,YAAY,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE;YACjD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAC9C,CACF,CAAC;QAEF,MAAM,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC;YAC1C,EAAE,MAAM,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE5E,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAE9C,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uHAAuH,EAAE,KAAK,IAAI,EAAE;QACrI,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE5E,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAE3C,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8GAA8G,EAAE,KAAK,IAAI,EAAE;QAC5H,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE5E,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAElD,EAAE,CAAC,mBAAmB,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK;YACnB,gBAAgB;SACjB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAExB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK;YACnB,gBAAgB,EAAE,SAAS;SAC5B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAS,KAAK,EAAE,KAAK,EAAE,EAAE;YACrD,IAAI,KAAK,CAAC,YAAY,KAAK,iBAAiB,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK;YACnB,gBAAgB;SACjB,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAExC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAS,KAAK,IAAI,EAAE,CAChD,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAC7C,CAAC;QAEF,MAAM,MAAM,CACV,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC5D,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC;SACpC,CAAC,CACH,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8GAA8G,EAAE,KAAK,IAAI,EAAE;QAC5H,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,EAAE,MAAM,EAAE,2BAA2B,GAAG,YAAY,EAAE,EACtD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CACxE,CAAC;QAEF,MAAM,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAE3E,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,EAAE,MAAM,EAAE,2BAA2B,GAAG,YAAY,EAAE,EACtD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CACxE,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,YAAY,EAAE,KAAK;YACnB,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC;SAClC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -19,11 +19,17 @@ describe("dmAdmit", () => {
19
19
  it("mints a grant for the named device and returns it with the exact call the sender should make", async () => {
20
20
  const admitAgentForDm = vi.fn(async () => Promise.resolve(GRANT));
21
21
  const result = await dmAdmit({ admitAgentForDm }, { action: "dm_admit", target: SENDER }, RECEIVER);
22
- expect(admitAgentForDm).toHaveBeenCalledWith(SENDER);
22
+ expect(admitAgentForDm).toHaveBeenCalledWith(SENDER, 0);
23
23
  expect(result.isError).toBe(false);
24
24
  expect(result.content).toContain(encodeTokenText(GRANT));
25
25
  expect(result.content).toContain(`dm_use_grant with target ${RECEIVER}`);
26
26
  });
27
+ it("admits a user principal with a delegation depth of one hop, so that user's devices can reuse the grant", async () => {
28
+ const admitAgentForDm = vi.fn(async () => Promise.resolve(GRANT));
29
+ const result = await dmAdmit({ admitAgentForDm }, { action: "dm_admit", target: SENDER, principal: true }, RECEIVER);
30
+ expect(admitAgentForDm).toHaveBeenCalledWith(SENDER, 1);
31
+ expect(result.content).toContain("every device of that user");
32
+ });
27
33
  it("reports that grants are unavailable on a store that cannot mint them", async () => {
28
34
  const result = await dmAdmit({}, { action: "dm_admit", target: SENDER }, RECEIVER);
29
35
  expect(result.isError).toBe(true);
@@ -32,20 +38,20 @@ describe("dmAdmit", () => {
32
38
  });
33
39
  describe("dmUseGrant", () => {
34
40
  it("presents the decoded grant to the counterpart and reports DM access", async () => {
35
- const requestDmAccess = vi.fn(async () => Promise.resolve());
36
- const result = await dmUseGrant({ requestDmAccess }, {
41
+ const presentDmGrant = vi.fn(async () => Promise.resolve());
42
+ const result = await dmUseGrant({ presentDmGrant }, {
37
43
  action: "dm_use_grant",
38
44
  target: RECEIVER,
39
45
  grant: encodeTokenText(GRANT),
40
46
  });
41
- expect(requestDmAccess).toHaveBeenCalledWith(RECEIVER, GRANT);
47
+ expect(presentDmGrant).toHaveBeenCalledWith(RECEIVER, GRANT);
42
48
  expect(result.isError).toBe(false);
43
49
  expect(result.content).toContain(RECEIVER);
44
50
  });
45
51
  it("refuses text that is not a token before contacting anyone", async () => {
46
- const requestDmAccess = vi.fn(async () => Promise.resolve());
47
- await expect(dmUseGrant({ requestDmAccess }, { action: "dm_use_grant", target: RECEIVER, grant: "not a token" })).rejects.toThrow(/not a valid capability token/);
48
- expect(requestDmAccess).not.toHaveBeenCalled();
52
+ const presentDmGrant = vi.fn(async () => Promise.resolve());
53
+ await expect(dmUseGrant({ presentDmGrant }, { action: "dm_use_grant", target: RECEIVER, grant: "not a token" })).rejects.toThrow(/not a valid capability token/);
54
+ expect(presentDmGrant).not.toHaveBeenCalled();
49
55
  });
50
56
  it("reports that grants are unavailable on a store that cannot present them", async () => {
51
57
  const result = await dmUseGrant({}, {
@@ -1 +1 @@
1
- {"version":3,"file":"dm-grant-actions.unit.test.js","sourceRoot":"","sources":["../../src/test/dm-grant-actions.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dm-grant-actions.unit.test.js","sourceRoot":"","sources":["../../src/test/dm-grant-actions.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Integration test for pre-authorised DMs through the tool surface: the receiver admits the sender (dm_admit), the sender presents the grant (dm_use_grant), and the first DM is delivered with no decision at the receiving end. A grant minted for someone else, or revoked, is refused.
3
3
  */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { tmpdir } from "node:os";
4
7
  import { test, expect } from "vitest";
5
8
  import { MeshStore } from "../core/mesh-store.js";
6
9
  import { CommsTool } from "../core/tool.js";
@@ -93,7 +96,7 @@ test("a grant minted for a different device is refused", async () => {
93
96
  grant: grantFrom(admitted.content),
94
97
  });
95
98
  expect(used.isError).toBe(true);
96
- expect(used.content).toMatch(/refused/);
99
+ expect(used.content).toMatch(/not issued to this device or its user/);
97
100
  }
98
101
  finally {
99
102
  await receiver.store.shutdown();
@@ -118,7 +121,8 @@ test("a revoked grant is refused", async () => {
118
121
  grant: grantFrom(admitted.content),
119
122
  });
120
123
  expect(used.isError).toBe(true);
121
- expect(used.content).toMatch(/refused/);
124
+ // Refused locally once the revocation has reached this side's view, otherwise by the receiver: both are the grant being rejected as revoked.
125
+ expect(used.content).toMatch(/cannot be used \(revoked\)|refused/);
122
126
  }
123
127
  finally {
124
128
  await receiver.store.shutdown();
@@ -142,4 +146,113 @@ test("dm_use_grant with text that is not a grant fails without contacting the re
142
146
  await sender.store.shutdown();
143
147
  }
144
148
  });
149
+ /** A party whose user principal is fixed by the caller, so two of them can be two devices of one person. */
150
+ async function partyOfUser(port, name, userIdentityDir) {
151
+ const store = new MeshStore({ coordinatorPort: port });
152
+ await wireTestTransport(store, {
153
+ userIdentityOptions: { dir: userIdentityDir },
154
+ });
155
+ await store.init();
156
+ await store.registerAgent({
157
+ name,
158
+ harness: "test",
159
+ cwd: `/test/${name}`,
160
+ pid: process.pid,
161
+ visibility: "visible",
162
+ tags: [],
163
+ });
164
+ return {
165
+ store,
166
+ tool: new CommsTool(store),
167
+ ctx: {
168
+ agentId: store.peerId,
169
+ harness: "test",
170
+ cwd: `/test/${name}`,
171
+ pid: process.pid,
172
+ },
173
+ };
174
+ }
175
+ /** The principal id in a whoami result. */
176
+ function principalFrom(content) {
177
+ const line = content.split("\n").find((l) => l.startsWith("Principal: "));
178
+ if (line === undefined)
179
+ throw new Error("whoami reported no principal");
180
+ return line.slice("Principal: ".length);
181
+ }
182
+ test("whoami reports the user principal, so a person can hand it to someone who wants to admit them", async () => {
183
+ const { sender } = await connectedPair();
184
+ try {
185
+ const whoami = await sender.tool.handle(sender.ctx, { action: "whoami" });
186
+ expect(whoami.content).toMatch(/^Principal: [0-9a-f]{64}$/m);
187
+ expect(whoami.content).not.toContain(`Principal: ${sender.store.peerId}`);
188
+ }
189
+ finally {
190
+ await sender.store.shutdown();
191
+ }
192
+ });
193
+ test("admitting a person's principal lets every one of their devices DM with no decision, from the same grant text", async () => {
194
+ const port = freshPort();
195
+ const receiver = await party(port, "receiver");
196
+ const dir = fs.mkdtempSync(path.join(tmpdir(), "dm-grant-user-"));
197
+ const first = await partyOfUser(port, "first-device", dir);
198
+ const second = await partyOfUser(port, "second-device", dir);
199
+ try {
200
+ const principal = principalFrom((await first.tool.handle(first.ctx, { action: "whoami" })).content);
201
+ expect(principalFrom((await second.tool.handle(second.ctx, { action: "whoami" })).content)).toBe(principal);
202
+ const admitted = await receiver.tool.handle(receiver.ctx, {
203
+ action: "dm_admit",
204
+ target: principal,
205
+ principal: true,
206
+ });
207
+ expect(admitted.isError).toBe(false);
208
+ const grant = grantFrom(admitted.content);
209
+ for (const device of [first, second]) {
210
+ const used = await device.tool.handle(device.ctx, {
211
+ action: "dm_use_grant",
212
+ target: receiver.store.peerId,
213
+ grant,
214
+ });
215
+ expect(used.isError, used.content).toBe(false);
216
+ expect(receiver.store.listPendingRoomJoins()).toEqual([]);
217
+ const sent = await device.tool.handle(device.ctx, {
218
+ action: "dm",
219
+ target: receiver.store.peerId,
220
+ content: `hello from ${device.ctx.cwd}`,
221
+ });
222
+ expect(sent.isError, sent.content).toBe(false);
223
+ }
224
+ }
225
+ finally {
226
+ await second.store.shutdown();
227
+ await first.store.shutdown();
228
+ await receiver.store.shutdown();
229
+ fs.rmSync(dir, { recursive: true, force: true });
230
+ }
231
+ });
232
+ test("a principal-level grant is refused when presented from a device of some other user", async () => {
233
+ const port = freshPort();
234
+ const receiver = await party(port, "receiver");
235
+ const owner = await party(port, "owner");
236
+ const stranger = await party(port, "stranger");
237
+ try {
238
+ const ownerPrincipal = principalFrom((await owner.tool.handle(owner.ctx, { action: "whoami" })).content);
239
+ const admitted = await receiver.tool.handle(receiver.ctx, {
240
+ action: "dm_admit",
241
+ target: ownerPrincipal,
242
+ principal: true,
243
+ });
244
+ const used = await stranger.tool.handle(stranger.ctx, {
245
+ action: "dm_use_grant",
246
+ target: receiver.store.peerId,
247
+ grant: grantFrom(admitted.content),
248
+ });
249
+ expect(used.isError).toBe(true);
250
+ expect(used.content).toMatch(/not issued to this device or its user/);
251
+ }
252
+ finally {
253
+ await stranger.store.shutdown();
254
+ await owner.store.shutdown();
255
+ await receiver.store.shutdown();
256
+ }
257
+ });
145
258
  //# sourceMappingURL=dm-grant-tool.integration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dm-grant-tool.integration.test.js","sourceRoot":"","sources":["../../src/test/dm-grant-tool.integration.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB,SAAS,SAAS;IAChB,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,QAAQ,CAAC;AAClB,CAAC;AAQD,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,KAAK,CAAC,aAAa,CAAC;QACxB,IAAI;QACJ,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,SAAS,IAAI,EAAE;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;IACH,OAAO;QACL,KAAK;QACL,IAAI,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC;QAC1B,GAAG,EAAE;YACH,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,SAAS,IAAI,EAAE;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,OAAO,CACX,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,EAC1E,8BAA8B,CAC/B,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,0DAA0D;AAC1D,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;IAC7F,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxD,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAChC,4BAA4B,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CACpD,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YAChD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;YAC7B,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YAChD,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;YAC7B,OAAO,EAAE,oBAAoB;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,OAAO,CACX,GAAG,EAAE,CACH,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,oBAAoB,CAC1C,EACH,0BAA0B,CAC3B,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;IAClE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxD,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YAChD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;YAC7B,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC5C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxD,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;SAC5B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACvD,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YAChD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;YAC7B,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;IAClG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YAChD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;YAC7B,KAAK,EAAE,qBAAqB;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"dm-grant-tool.integration.test.js","sourceRoot":"","sources":["../../src/test/dm-grant-tool.integration.test.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { buildAction } from "../core/bridge.js";
8
8
  import { wireTestTransport } from "./test-transport.js";
9
9
  const TEST_PORT = 0;
10
10
  const DEVICE_HEX = "aabbccdd";
11
+ const ONE_HOUR_MS = 3_600_000;
11
12
  const PRINCIPAL_HEX = "eeff0011";
12
13
  describe("CommsTool gateway trust actions", () => {
13
14
  test("gateway_trust adds a device to the allowlist", async () => {
@@ -129,6 +130,27 @@ describe("CommsTool gateway trust actions", () => {
129
130
  expect(result.content).toContain(PRINCIPAL_HEX);
130
131
  await store.shutdown();
131
132
  });
133
+ test("gateway_list_trusted reports a device trusted only through a principal, with the principal that vouches for it", async () => {
134
+ const store = new MeshStore({ coordinatorPort: TEST_PORT });
135
+ await wireTestTransport(store);
136
+ await store.init();
137
+ const agent = await store.registerAgent({
138
+ name: "gateway-list-member-test",
139
+ harness: "test",
140
+ cwd: "/test",
141
+ pid: process.pid,
142
+ visibility: "visible",
143
+ tags: [],
144
+ });
145
+ const tool = new CommsTool(store);
146
+ const memberHex = "1234567812345678";
147
+ store.addTrustedGatewayPrincipal(PRINCIPAL_HEX);
148
+ store.gatewayTrust.noteVerifiedMember(memberHex, PRINCIPAL_HEX, Date.now() + ONE_HOUR_MS);
149
+ const result = await tool.handle({ agentId: agent.id, harness: "test", cwd: "/test", pid: process.pid }, { action: "gateway_list_trusted" });
150
+ expect(result.isError, result.content).toBe(false);
151
+ expect(result.content).toContain(`Devices trusted through a principal:\n ${memberHex} (vouched for by ${PRINCIPAL_HEX})`);
152
+ await store.shutdown();
153
+ });
132
154
  test("gateway_list_trusted reports none trusted by default", async () => {
133
155
  const store = new MeshStore({ coordinatorPort: TEST_PORT });
134
156
  await wireTestTransport(store);