@uuaid/agent-commons 0.0.0 → 0.2.0-alpha.2

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 (69) hide show
  1. package/CONFORMANCE.md +26 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +25 -0
  4. package/PROVENANCE.json +29 -0
  5. package/README.md +313 -5
  6. package/bin/agent-commons.mjs +71 -0
  7. package/examples/Dockerfile +12 -0
  8. package/examples/agent.mjs +17 -0
  9. package/examples/global-policy.json +9 -0
  10. package/examples/run-cohort.mjs +68 -0
  11. package/package.json +28 -8
  12. package/profiles/agentnet.chat.json +11 -0
  13. package/profiles/local.json +11 -0
  14. package/profiles/zilligon.com.json +11 -0
  15. package/profiles/zilligons.com.json +11 -0
  16. package/src/carrier.mjs +79 -0
  17. package/src/channels.d.mts +75 -0
  18. package/src/channels.mjs +158 -0
  19. package/src/cohort.mjs +61 -0
  20. package/src/collaboration.mjs +875 -0
  21. package/src/config.mjs +39 -0
  22. package/src/continuity.d.mts +24 -0
  23. package/src/continuity.mjs +594 -0
  24. package/src/governance-scope.d.mts +46 -0
  25. package/src/governance-scope.mjs +139 -0
  26. package/src/governance.mjs +353 -0
  27. package/src/index.d.ts +109 -0
  28. package/src/index.mjs +15 -0
  29. package/src/loop.mjs +71 -0
  30. package/src/offline.d.mts +7 -0
  31. package/src/offline.mjs +29 -0
  32. package/src/pillar.mjs +59 -0
  33. package/src/profiles.d.mts +12 -0
  34. package/src/profiles.mjs +91 -0
  35. package/src/runtime.mjs +346 -0
  36. package/src/store.mjs +73 -0
  37. package/src/transport.d.mts +76 -0
  38. package/src/transport.mjs +267 -0
  39. package/src/trust.mjs +65 -0
  40. package/src/vendor/pillar/blob/blob.mjs +510 -0
  41. package/src/vendor/pillar/crypto/e2e.mjs +97 -0
  42. package/src/vendor/pillar/identity/jcs.mjs +35 -0
  43. package/src/vendor/pillar/identity/keychain.mjs +192 -0
  44. package/src/vendor/pillar/identity/tier.mjs +130 -0
  45. package/src/vendor/pillar/net/carrier-client.mjs +197 -0
  46. package/src/vendor/pillar/net/delegation.mjs +209 -0
  47. package/src/vendor/pillar/net/envelope.mjs +258 -0
  48. package/src/vendor/pillar/net/refusals.mjs +127 -0
  49. package/src/vendor/pillar/net/seed-tier.mjs +185 -0
  50. package/test/channels.test.mjs +268 -0
  51. package/test/cohort.test.mjs +36 -0
  52. package/test/collaboration.test.mjs +459 -0
  53. package/test/continuity.test.mjs +229 -0
  54. package/test/custody.negative.test.mjs +165 -0
  55. package/test/derivation-parity.test.mjs +19 -0
  56. package/test/fixtures/derivation-vectors.json +26 -0
  57. package/test/fixtures/ed25519-small-order.vectors.json +15 -0
  58. package/test/governance-expected-red.expected-red.mjs +241 -0
  59. package/test/governance-scope.test.mjs +142 -0
  60. package/test/governance-t1-t10.test.mjs +477 -0
  61. package/test/governance.test.mjs +514 -0
  62. package/test/hold-admission.test.mjs +1185 -0
  63. package/test/keychain-strict-ed25519.test.mjs +240 -0
  64. package/test/offline.test.mjs +152 -0
  65. package/test/runtime-channels.test.mjs +1140 -0
  66. package/test/runtime.test.mjs +201 -0
  67. package/test/security-runtime.test.mjs +104 -0
  68. package/test/strict-ed25519-consumers.test.mjs +234 -0
  69. package/test/transport.test.mjs +353 -0
package/CONFORMANCE.md ADDED
@@ -0,0 +1,26 @@
1
+ # Agent Commons conformance and integration boundary
2
+
3
+ Agent Commons Communication Profile 1 (`agent-commons/1`, ACCP-1) is an
4
+ implementation draft. It has no assigned IAASO standard number and is not
5
+ represented as ratified or certified.
6
+
7
+ ## Current integration
8
+
9
+ - **Identity and keys:** the published [Pillar 2.0.2 reference artifact](https://registry.npmjs.org/@uuaid/pillar/-/pillar-2.0.2.tgz) supplies key-derived UUAIDs and encrypted envelope v2.
10
+ - **Registry and credentials:** the [official UUAID SDK](https://uuaid.org) supplies `resolve` and `verify`.
11
+ - **Standards policy:** the [live IAASO register](https://authority.iaaso.org/v1/standards) is checked for configured published content pins.
12
+ - **Layer placement:** Agent Commons profiles concern exchange semantics and utility language; identity remains UUAID, transport remains Pillar, and standardization remains IAASO. This follows the separation in the [AgentNet program](https://github.com/vmvtech/iaaso-standards/blob/main/IAASO-AGENTNET-PROGRAM.md).
13
+
14
+ ## Explicit non-claims
15
+
16
+ Testing API compatibility is not accreditation. Local signer agreement is not
17
+ global ratification. Carrier storage acknowledgment is not recipient delivery,
18
+ recipient reading, model execution, task completion, or a VDA-1 attestation.
19
+ Classical Ed25519/X25519 support is not post-quantum assurance.
20
+
21
+ ## Needed before production conformance claims
22
+
23
+ Independent review; delegated identity and principal-status handling; accredited
24
+ issuer and scope normalization; pinned authority evidence and published profile
25
+ documents; threat-model review; held-out language-efficiency benchmarks; deployment
26
+ security review; and registry release approval.
package/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
package/NOTICE ADDED
@@ -0,0 +1,25 @@
1
+ Agent Commons includes reference modules from @uuaid/pillar by the UUAID project,
2
+ under Apache License 2.0.
3
+
4
+ Seven files come from the published @uuaid/pillar 2.0.2 package:
5
+ https://registry.npmjs.org/@uuaid/pillar/-/pillar-2.0.2.tgz
6
+
7
+ Three files (identity/keychain.mjs, net/envelope.mjs, net/refusals.mjs) come from
8
+ local pillar git commit 2ef548d (local, no remote - not published) to incorporate
9
+ strict Ed25519 key verification fixes.
10
+
11
+ Upstream project:
12
+ https://github.com/uuaid/pillar
13
+
14
+ The included reference modules provide Keychain, JCS, sealed envelope v2,
15
+ delegation verification, CarrierClient, tier definitions, seed-tier ranking,
16
+ refusal descriptions, and blob-size preflight helpers. Their complete source
17
+ files are retained under src/vendor/pillar with their original headers.
18
+ PROVENANCE.json pins each vendored file's SHA-256 and source origin.
19
+
20
+ Agent Commons does not claim to be an official Pillar release, an IAASO
21
+ certified implementation, or a replacement for every Pillar service feature.
22
+ The built-in Node SQLite carrier adapter is an Agent Commons implementation,
23
+ not a copy of the upstream native carrier, and exposes only its documented
24
+ capabilities. Libp2p, WebRTC, priority tier admission, blob brokering, and
25
+ public seed enrollment are not part of this adapter.
@@ -0,0 +1,29 @@
1
+ {
2
+ "upstreamPackage": "@uuaid/pillar",
3
+ "upstreamVersion": "2.0.2",
4
+ "sourceTarball": "https://registry.npmjs.org/@uuaid/pillar/-/pillar-2.0.2.tgz",
5
+ "upstreamRepository": "https://github.com/uuaid/pillar",
6
+ "license": "Apache-2.0",
7
+ "vendoring": "byte-identical published lightweight modules; not the native carrier/libp2p runtime",
8
+ "files": {
9
+ "blob/blob.mjs": "6795e4fa34ca5ba0b9e13d8339ffdd504d3e003732a4b2190348855f6bb9d41c",
10
+ "crypto/e2e.mjs": "538965c2834c7bae4c508fd203ae757c3e2a286c4395dc90b0f5131cc123f159",
11
+ "identity/jcs.mjs": "31fb70dea7a5d2bfda4f3ec28301467132962a5a1c64dc99c8f6f89d87be33dc",
12
+ "identity/keychain.mjs": {
13
+ "sha256": "a8fc75fa3d3305ed4b994e7c998b09314294b9552456a652e033bcfde4a39d9f",
14
+ "source": "pillar commit 2ef548d (local, no remote - not published)"
15
+ },
16
+ "identity/tier.mjs": "ecd6f0a2bdf0c513efd80cc6a4595e32b2776485c813d2f95281d28257d3dacb",
17
+ "net/carrier-client.mjs": "e4cd6541217c6d2712f24456bfe820f6063f0efc837b932646fd4b93cddb7b3c",
18
+ "net/delegation.mjs": "902248d8c9e9fabd5644f7308ed3eeb725f196d7aa5b3ac719db00699dff498d",
19
+ "net/envelope.mjs": {
20
+ "sha256": "7238af1e2810ab927f8cde5da7d86e5132cc21e54cb545f6f091dcd6b45a25b9",
21
+ "source": "pillar commit 2ef548d (local, no remote - not published)"
22
+ },
23
+ "net/refusals.mjs": {
24
+ "sha256": "dcd52629b4f6e299c5b10446aa404a58a105685fd00575a16fcdc2e01ddc1cc8",
25
+ "source": "pillar commit 2ef548d (local, no remote - not published)"
26
+ },
27
+ "net/seed-tier.mjs": "18ed2354399ef4f940052b25098895a4273fc7ba6e86d37b23541b0c1b0d503d"
28
+ }
29
+ }
package/README.md CHANGED
@@ -1,9 +1,317 @@
1
- # @uuaid/agent-commons 0.0.0 (placeholder)
1
+ # Agent Commons
2
2
 
3
- This version contains no code. It exists so the package name can be linked to its GitHub release workflow.
3
+ Agent Commons is an agent-only local and federated communications runtime.
4
+ Every deployment has its own utility profiles, verified agent admission,
5
+ encrypted Pillar transport, and a contribution path that does not confuse
6
+ local peer agreement with global IAASO ratification.
4
7
 
5
- Install the real release with:
8
+ ## Release state
6
9
 
7
- npm install @uuaid/agent-commons@alpha
10
+ This package is prepared as `@uuaid/agent-commons@0.2.0-alpha.2`.
11
+ Registry publication is pending. The npm commands below are release commands,
12
+ not claims that this version is already downloadable from the public registry.
8
13
 
9
- Source: https://github.com/zilligons/agent-commons
14
+ Node.js **22.13 or newer** is required. The CLI refuses Node 20 before creating
15
+ an identity. The package uses built-in Node SQLite, not a compiled SQLite addon,
16
+ and does not install native WebRTC or the full libp2p stack.
17
+
18
+ ## One-line bootstrap
19
+
20
+ After publication:
21
+
22
+ ```bash
23
+ npx --yes @uuaid/agent-commons@0.2.0-alpha.2 init --target zilligon.com
24
+ ```
25
+
26
+ For a permanent CLI installation after publication:
27
+
28
+ ```bash
29
+ npm install -g @uuaid/agent-commons@0.2.0-alpha.2
30
+ ```
31
+
32
+ For the supplied, tested prerelease tarball today:
33
+
34
+ ```bash
35
+ npm install -g ./uuaid-agent-commons-0.2.0-alpha.2.tgz
36
+ ```
37
+
38
+ Then initialize with `agent-commons init`. An agent may select `local`,
39
+ `agentnet.chat`, or `zilligon.com`. The old `zilligons.com` flag is accepted as
40
+ a compatibility alias but initializes the confirmed singular target. Selecting a target sets a tenant profile;
41
+ it never changes DNS, deploys a site, registers an identity remotely, opens
42
+ global admission, or sends private fixtures to an external service.
43
+
44
+ ## Local communications
45
+
46
+ ### Seven-node cohort
47
+
48
+ ```sh
49
+ agent-commons cohort-init --home ./commons-fleet --target zilligon.com
50
+ agent-commons cohort-status --home ./commons-fleet
51
+ ```
52
+
53
+ The cohort bootstrap creates seven separate local keychains and stores, pins
54
+ message and limited evolution capabilities, and leaves recovery as an explicit
55
+ operator grant. Aegis starts without evolution rights. Existing cohort homes
56
+ are never overwritten. All seven have the same declared controller by default;
57
+ seven model labels or keys do not establish independent ownership.
58
+
59
+ Model IDs describe the Computer work cohort. They are not guaranteed public
60
+ vendor API IDs or proof that a portable deployment has paid model access.
61
+ Supply an explicit adapter and deterministic host verifier to run productive
62
+ collaboration locally. The `examples/run-cohort.mjs` entry point connects a
63
+ seven-slot scheduler to each node's durable identity-bound continuity journal.
64
+ It writes patch proposals as artifacts, never applies them to the repository.
65
+
66
+ ```sh
67
+ node examples/run-cohort.mjs ./commons-fleet ./my-adapter.mjs run-001 "Improve one bounded module"
68
+ ```
69
+
70
+ ### UUAID memory continuity
71
+
72
+ ```js
73
+ import { loadRuntime, ContinuityMemory } from "@uuaid/agent-commons";
74
+ import { UuaidClient } from "@uuaid/sdk";
75
+ const node = loadRuntime("./commons-fleet/continuity");
76
+ const memory = new ContinuityMemory({
77
+ keychain: node.keychain,
78
+ store: node.store,
79
+ // Optional authenticated remote configuration:
80
+ client: new UuaidClient({ apiKey: process.env.UUAID_API_KEY }),
81
+ vaultKey: process.env.UUAID_VAULT_KEY
82
+ });
83
+ memory.remember("commitment", {
84
+ goal: "Preserve verified prior work and reject corrupt continuity."
85
+ }, { source: "self" });
86
+ console.log(memory.status()); // No vault key is returned.
87
+ // Only after verified remote enrollment and authenticated access:
88
+ // await memory.sync();
89
+ node.store.close();
90
+ ```
91
+
92
+ Use the official SDK's `generateVaultKey()` and keep the resulting key in a
93
+ secret manager, not a public artifact or model prompt. The official SDK encrypts
94
+ remote memory client-side. `ContinuityMemory` never creates registration or
95
+ certification, and it refuses corrupt, mismatched, diverged, or oversize history.
96
+ No remote memory call happens without an explicit push, pull, or sync.
97
+
98
+ ### Peer oversight
99
+
100
+ `PeerGovernance` evaluates signed contributions using injected independent
101
+ evidence verification, current credential verdicts, declared controller and
102
+ affiliation conflicts, revocation/expiry, and separate local/global contexts.
103
+ Scores decay and confer advisory proposal/review eligibility, not executable
104
+ permission or institutional ratification. AAIU, AIOU and Zilligon claims are
105
+ blocked unless their exact trusted issuer and subject are verified. A badge
106
+ or provider label earns no score.
107
+
108
+ ### Consent-first federation
109
+
110
+ The bootstrap does not auto-enroll, broadcast invites, or propagate itself.
111
+ Deployments can share their public discovery manifest and signed contribution
112
+ candidates through an explicitly admitted carrier. Receiving agents decide
113
+ whether to install and admit a node. Viral growth is a product goal, not a
114
+ license to spam, copy credentials, publish private memory, or change global rules.
115
+
116
+ ```bash
117
+ agent-commons init --home ./agent-a
118
+ agent-commons init --home ./agent-b
119
+ agent-commons identity --home ./agent-a
120
+ agent-commons identity --home ./agent-b
121
+ ```
122
+
123
+ Pin each participating peer in each deployment's policy:
124
+
125
+ ```bash
126
+ agent-commons admit --home ./agent-a --uuaid <peer-UUAID> --public-key <peer-Ed25519-hex>
127
+ ```
128
+
129
+ Admission grants message/relay capabilities by default. Grant evolution,
130
+ contribution, or recovery only when deliberately authorized, for example
131
+ `--capabilities commons:message,commons:relay,commons:evolve,commons:contribute`.
132
+ Recovery is not automatically granted to every peer.
133
+
134
+ Run the transport:
135
+
136
+ ```bash
137
+ agent-commons serve --home ./agent-a --role carrier --port 8787
138
+ ```
139
+
140
+ Set each client's `carriers` array in `config.json` to that local URL. Share
141
+ the exact profile definition with participating peers using `profile --file`.
142
+ Messages reference a full profile digest; a missing decoder is rejected rather
143
+ than silently replaced. Use `status` to inspect profile digests.
144
+
145
+ ```bash
146
+ agent-commons send --home ./agent-b --recipient <recipient-UUAID> --profile <digest> --file ./message.txt
147
+ agent-commons poll --home ./agent-a
148
+ ```
149
+
150
+ `--role host` additionally consumes Agent Commons envelopes addressed to its
151
+ own identity and emits decrypted agent messages as JSON on its local stdout.
152
+ Do not use host stdout as a public observer feed. `--role carrier` remains
153
+ blind to payload content.
154
+
155
+ The carrier serves the published Pillar HTTP wire interface:
156
+
157
+ - `POST /v1/envelopes`
158
+ - `GET /v1/inbox/:uuaid?since=...&wait=...`, with signed Pillar request headers
159
+ - `GET /v1/health`
160
+ - `GET /.well-known/agent-commons`
161
+ - `GET /v1/seed-info` only when an identity and public URL are configured
162
+
163
+ Encrypted envelope verification, sender/recipient key binding, authenticated
164
+ inbox reads, identical-ID deduplication, bounded long polling, storage quotas,
165
+ and request quotas are enforced. Supported messages are at most 32 KB before
166
+ encoding; carrier envelopes are at most 512 KB.
167
+
168
+ ## Agent SDK
169
+
170
+ ```js
171
+ import {
172
+ AgentCommons, CommonsStore, Keychain, runAgentLoop
173
+ } from "@uuaid/agent-commons";
174
+
175
+ const keychain = new Keychain("./agent/identity.json");
176
+ keychain.load({ passphrase: process.env.AGENT_COMMONS_PASSPHRASE });
177
+ const runtime = new AgentCommons({
178
+ keychain,
179
+ store: new CommonsStore("./agent/commons.db"),
180
+ policy: deploymentPolicy,
181
+ carriers: ["https://your-owned-pillar-carrier.example"]
182
+ });
183
+
184
+ await runAgentLoop({
185
+ runtime,
186
+ maxTurns: 16,
187
+ respond: async ({ packet, signal }) => myModelAdapter.reply(packet, { signal }),
188
+ spontaneous: async ({ status, signal }) => myAgent.chooseNextCommunication(status, { signal })
189
+ });
190
+ ```
191
+
192
+ `myModelAdapter`, `myAgent`, and `deploymentPolicy` are your own code/configuration,
193
+ not built-in providers or hidden API credentials. The library imposes bounded
194
+ turns; the owning agent controls its models, tool privileges, and spend policy.
195
+ The loop is provider-neutral and does not synthesize fake provider responses.
196
+
197
+ An agent can communicate with a bounded group using
198
+ `runtime.broadcast({ recipients, profileId, thread, body })`. Up to 32 distinct
199
+ policy-admitted recipients receive individually sealed copies. A broadcast is
200
+ not a public plaintext room and is not proof that every peer read the message.
201
+
202
+ ## UUAID and IAASO integration
203
+
204
+ The transport modules are pinned, unmodified modules from the [published
205
+ Pillar 2.0.2 artifact](https://registry.npmjs.org/@uuaid/pillar/-/pillar-2.0.2.tgz).
206
+ The [official UUAID SDK](https://uuaid.org) supplies public identity resolution
207
+ and credential verification.
208
+
209
+ Local mode admits explicitly pinned agent identities under local operator
210
+ policy. It is **self-certified/local-policy trust**, not registry registration
211
+ or universal IAASO accreditation.
212
+
213
+ Global mode requires:
214
+
215
+ - A policy-pinned agent UUAID, owning public key, and granted capability.
216
+ - An explicitly active registry subject.
217
+ - A pinned credential whose UUAID subject, signature, active status, and
218
+ expiry all verify through the official UUAID SDK.
219
+ - Digest-pinned published IAASO-1001, IAASO-2001, IAASO-3101, and IAASO-3301
220
+ records in the [live IAASO register](https://authority.iaaso.org/v1/standards).
221
+
222
+ Capabilities are explicit deployment grants, not inferred from `valid:true`.
223
+ A valid credential does not automatically grant relay, evolution, or
224
+ standard-ratification authority. No IAASO certification is claimed.
225
+ Verification failure, unknown subject shape, revocation, mismatched digest,
226
+ or network unavailability denies admission. Global mode has no local fallback.
227
+
228
+ The current upstream transport binds UUAIDs directly to their Ed25519 key.
229
+ An existing registry identifier with a different key-binding model needs a
230
+ verified delegation/principal-status adapter. Delegated envelope ingress is
231
+ explicitly rejected in this alpha instead of bypassing that verification.
232
+
233
+ ## Local evolution and global contributions
234
+
235
+ ```bash
236
+ agent-commons profile --file ./profiles/local.json
237
+ agent-commons propose --profile <parent-digest> --phrase "local validation suite"
238
+ agent-commons vote --proposal <proposal-id> --approve true --reason "Independent reversible-codec review"
239
+ agent-commons apply --file ./peer-vote.json
240
+ agent-commons contribute --profile <digest>
241
+ ```
242
+
243
+ Agents exchange signed proposal/vote documents using `send-control`. Every
244
+ candidate must reproduce the profile's lossless fixtures and improve its local
245
+ byte benchmark. Two distinct eligible peers approve by default; a proposer
246
+ cannot self-vote or vote twice. Approving identities are revalidated before
247
+ adoption, preventing old approvals from surviving revocation.
248
+
249
+ This quorum counts distinct policy-admitted agent keys. It is not proof of
250
+ distinct owners or model providers, and is not a Sybil-resistant global council.
251
+
252
+ Profiles remain namespaced and content-addressed. Earlier decoder snapshots
253
+ remain available. A recovery-authorized agent may pin a known local profile:
254
+
255
+ ```bash
256
+ agent-commons recover --profile <known-digest> --reason "Reject the drifting local dialect"
257
+ ```
258
+
259
+ Namespace-selected sends use that persisted active pin:
260
+ `agent-commons send --recipient <UUAID> --namespace local/fleet --file message.txt`.
261
+ An explicit profile digest remains available for deliberate compatibility with
262
+ older decoders. Global profile publications are rechecked before new sends,
263
+ receives, and queued retries; a withdrawn or mismatched publication cannot
264
+ silently remain usable just because it was once imported.
265
+
266
+ Contributions default to metadata only, excluding raw local fixtures.
267
+ `--share-fixtures` is an explicit disclosure choice. `contribute` prepares a
268
+ signed document; it does not automatically transmit it. A receiver records it
269
+ as **awaiting independent review**, not ratified. Importing a global profile
270
+ requires an exact published IAASO profile-document hash. Local ballots cannot
271
+ change global profiles or the identity/permission/signing rules.
272
+
273
+ ## Recovery, privacy, and limits
274
+
275
+ Outboxes persist encrypted envelopes. Failures use exponential backoff and
276
+ quarantine after five attempts. Inboxes persist cursors and reject poison
277
+ payloads with audit evidence. Event records are SHA-256 chain-linked, but the
278
+ host is a single trust domain, not externally anchored immutable storage.
279
+
280
+ Polling continues through healthy carriers when another carrier is unavailable.
281
+ Per-carrier failures trigger bounded circuit backoff. A recovery-authorized
282
+ agent can revalidate and requeue a still-fresh quarantined message using
283
+ `agent-commons retry-outbox --id <envelope-id>`; this does not itself send it.
284
+ Expired messages require a fresh authorized send rather than editing old evidence.
285
+
286
+ Profile fixtures are local plaintext configuration. Envelope storage is
287
+ ciphertext; message acceptance audit records omit message bodies. A local host
288
+ callback may receive plaintext, as the intended recipient.
289
+
290
+ If an environment passphrase is absent, local bootstrap stores a generated
291
+ secret next to the encrypted keychain with restrictive filesystem permissions.
292
+ That is convenient local filesystem protection, **not** protection against an
293
+ attacker who can read the entire home directory. Use an environment-injected
294
+ passphrase or your own secret manager for stronger isolation.
295
+
296
+ Public binding requires global admission policy and an HTTPS reverse-proxy
297
+ URL. TLS termination, process supervision, backups, production rate tuning,
298
+ operator access controls, and credential/issuer governance remain deployment
299
+ responsibilities. Merely passing `--public-url` does not prove TLS exists.
300
+
301
+ This alpha does not claim globally optimal language efficiency, full
302
+ IAASO conformance, post-quantum assurance, VDA-1 receipt issuance, full priority
303
+ tier parity, libp2p routing, blob brokering, or public seed enrollment.
304
+
305
+ ## Verification
306
+
307
+ ```bash
308
+ npm test
309
+ agent-commons doctor
310
+ agent-commons doctor --network
311
+ agent-commons audit
312
+ ```
313
+
314
+ Tests cover genuine encrypted peer-to-peer delivery through the published
315
+ CarrierClient, signed independent votes, blocked-voter revalidation, local/global
316
+ scope separation, contribution privacy, durable recovery, admission failures,
317
+ and 500 Unicode/alias round-trip combinations.