agent-comms 8.7.0 → 8.8.1

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 (92) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +8 -3
  4. package/dist/account-cli.js +5 -5
  5. package/dist/account-cli.js.map +1 -1
  6. package/dist/account-join-cli.d.ts +1 -1
  7. package/dist/account-join-cli.d.ts.map +1 -1
  8. package/dist/account-join-cli.js +8 -4
  9. package/dist/account-join-cli.js.map +1 -1
  10. package/dist/bridges/user/web/dist/mesh-worker.js +1 -1
  11. package/dist/bridges/user/web/dist/sw.js +1 -1
  12. package/dist/core/account-bundle.d.ts +13 -8
  13. package/dist/core/account-bundle.d.ts.map +1 -1
  14. package/dist/core/account-bundle.js +44 -14
  15. package/dist/core/account-bundle.js.map +1 -1
  16. package/dist/core/account-join.d.ts +11 -3
  17. package/dist/core/account-join.d.ts.map +1 -1
  18. package/dist/core/account-join.js +47 -14
  19. package/dist/core/account-join.js.map +1 -1
  20. package/dist/core/agent-registry.d.ts.map +1 -1
  21. package/dist/core/agent-registry.js +2 -0
  22. package/dist/core/agent-registry.js.map +1 -1
  23. package/dist/core/bridge.d.ts +1 -0
  24. package/dist/core/bridge.d.ts.map +1 -1
  25. package/dist/core/bridge.js +6 -0
  26. package/dist/core/bridge.js.map +1 -1
  27. package/dist/core/gossip-directory.d.ts +4 -2
  28. package/dist/core/gossip-directory.d.ts.map +1 -1
  29. package/dist/core/gossip-directory.js +4 -5
  30. package/dist/core/gossip-directory.js.map +1 -1
  31. package/dist/core/gossip-extensions.d.ts +2 -0
  32. package/dist/core/gossip-extensions.d.ts.map +1 -1
  33. package/dist/core/gossip-extensions.js +3 -0
  34. package/dist/core/gossip-extensions.js.map +1 -1
  35. package/dist/core/group-proofs.d.ts +10 -6
  36. package/dist/core/group-proofs.d.ts.map +1 -1
  37. package/dist/core/group-proofs.js +69 -18
  38. package/dist/core/group-proofs.js.map +1 -1
  39. package/dist/core/issuer-grouping.d.ts +52 -0
  40. package/dist/core/issuer-grouping.d.ts.map +1 -0
  41. package/dist/core/{machine-grouping.js → issuer-grouping.js} +33 -33
  42. package/dist/core/issuer-grouping.js.map +1 -0
  43. package/dist/core/mesh-store.d.ts.map +1 -1
  44. package/dist/core/mesh-store.js +3 -1
  45. package/dist/core/mesh-store.js.map +1 -1
  46. package/dist/core/naming-actions.d.ts +5 -1
  47. package/dist/core/naming-actions.d.ts.map +1 -1
  48. package/dist/core/naming-actions.js +13 -1
  49. package/dist/core/naming-actions.js.map +1 -1
  50. package/dist/core/naming.d.ts +9 -5
  51. package/dist/core/naming.d.ts.map +1 -1
  52. package/dist/core/naming.js +14 -4
  53. package/dist/core/naming.js.map +1 -1
  54. package/dist/core/self-name-claim.d.ts +27 -0
  55. package/dist/core/self-name-claim.d.ts.map +1 -0
  56. package/dist/core/{machine-name-claim.js → self-name-claim.js} +7 -8
  57. package/dist/core/self-name-claim.js.map +1 -0
  58. package/dist/core/tool.d.ts.map +1 -1
  59. package/dist/core/tool.js +11 -7
  60. package/dist/core/tool.js.map +1 -1
  61. package/dist/core/types.d.ts +6 -0
  62. package/dist/core/types.d.ts.map +1 -1
  63. package/dist/core/types.js +5 -0
  64. package/dist/core/types.js.map +1 -1
  65. package/dist/core/user-identity.d.ts +9 -4
  66. package/dist/core/user-identity.d.ts.map +1 -1
  67. package/dist/core/user-identity.js +38 -9
  68. package/dist/core/user-identity.js.map +1 -1
  69. package/dist/test/account-join.integration.test.js +98 -1
  70. package/dist/test/account-join.integration.test.js.map +1 -1
  71. package/dist/test/account-transfer.unit.test.js +41 -13
  72. package/dist/test/account-transfer.unit.test.js.map +1 -1
  73. package/dist/test/issuer-grouping.unit.test.d.ts +2 -0
  74. package/dist/test/issuer-grouping.unit.test.d.ts.map +1 -0
  75. package/dist/test/issuer-grouping.unit.test.js +137 -0
  76. package/dist/test/issuer-grouping.unit.test.js.map +1 -0
  77. package/dist/test/naming.integration.test.d.ts +1 -1
  78. package/dist/test/naming.integration.test.js +45 -1
  79. package/dist/test/naming.integration.test.js.map +1 -1
  80. package/dist/test/user-identity.unit.test.js +25 -1
  81. package/dist/test/user-identity.unit.test.js.map +1 -1
  82. package/package.json +2 -2
  83. package/dist/core/machine-grouping.d.ts +0 -47
  84. package/dist/core/machine-grouping.d.ts.map +0 -1
  85. package/dist/core/machine-grouping.js.map +0 -1
  86. package/dist/core/machine-name-claim.d.ts +0 -22
  87. package/dist/core/machine-name-claim.d.ts.map +0 -1
  88. package/dist/core/machine-name-claim.js.map +0 -1
  89. package/dist/test/machine-grouping.unit.test.d.ts +0 -2
  90. package/dist/test/machine-grouping.unit.test.d.ts.map +0 -1
  91. package/dist/test/machine-grouping.unit.test.js +0 -68
  92. package/dist/test/machine-grouping.unit.test.js.map +0 -1
@@ -1,68 +0,0 @@
1
- /**
2
- * Unit tests for list_agents' machine placement (machine-grouping.ts). The identify step is a stub, so what is under test is which devices get placed and how a failure to identify one is contained, not the cryptography (membership-proof.unit.test.ts).
3
- */
4
- import { createHash } from "node:crypto";
5
- import { describe, expect, it, vi } from "vitest";
6
- import { MachineGrouping } from "../core/machine-grouping.js";
7
- const ONE_HOUR_MS = 3_600_000;
8
- /** A stable, valid device id for a label, so each test names its devices instead of numbering them. */
9
- function hex(label) {
10
- return createHash("sha256").update(label).digest("hex");
11
- }
12
- /** A known device whose agent/self advert carries the given machine proof. */
13
- function known(label, machineProof) {
14
- return {
15
- deviceId: hex(label),
16
- advert: { "agent/self": { machine: machineProof } },
17
- };
18
- }
19
- /** The naming deps for adverts that carry no name claim: verifying one would mean the test's fixtures are not what it says, so it fails loudly. */
20
- const noNames = {
21
- verifyName: async () => Promise.reject(new Error("these adverts carry no name claim")),
22
- getOwnMachineName: () => undefined,
23
- };
24
- describe("MachineGrouping", () => {
25
- it("reports a proof it cannot identify, leaves that device unplaced, and still places the others", async () => {
26
- const onError = vi.fn();
27
- const identify = vi.fn(async (claim) => claim.proof === "broken"
28
- ? Promise.reject(new Error("revocation view unavailable"))
29
- : Promise.resolve({
30
- ok: true,
31
- issuerHex: hex("remote-machine"),
32
- expires: Date.now() + ONE_HOUR_MS,
33
- }));
34
- const grouping = new MachineGrouping({
35
- listKnownDevices: () => [
36
- known("unidentifiable", "broken"),
37
- known("placed", "good"),
38
- ],
39
- identify,
40
- getPeerId: () => hex("self"),
41
- getMachineId: () => hex("own-machine"),
42
- onError,
43
- ...noNames,
44
- });
45
- const machines = await grouping.machinesByDevice();
46
- expect(machines).toEqual(new Map([
47
- [hex("self"), hex("own-machine")],
48
- [hex("placed"), hex("remote-machine")],
49
- ]));
50
- expect(onError).toHaveBeenCalledTimes(1);
51
- expect(onError.mock.calls[0]?.[0].message).toContain(hex("unidentifiable"));
52
- });
53
- it("tries a proof it could not identify again on the next listing, since the failure was not a verdict on the proof", async () => {
54
- const identify = vi.fn(async () => Promise.reject(new Error("revocation view unavailable")));
55
- const grouping = new MachineGrouping({
56
- listKnownDevices: () => [known("retried", "proof")],
57
- identify,
58
- getPeerId: () => hex("self"),
59
- getMachineId: () => hex("own-machine"),
60
- onError: () => undefined,
61
- ...noNames,
62
- });
63
- await grouping.machinesByDevice();
64
- await grouping.machinesByDevice();
65
- expect(identify).toHaveBeenCalledTimes(2);
66
- });
67
- });
68
- //# sourceMappingURL=machine-grouping.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"machine-grouping.unit.test.js","sourceRoot":"","sources":["../../src/test/machine-grouping.unit.test.ts"],"names":[],"mappings":"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"}