@agenticprimitives/identity-directory-adapters 1.0.0-alpha.5 → 1.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -14
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# @agenticprimitives/identity-directory-adapters
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
**one package allowed to import `agent-naming`** (spec 100 §4). The directory core
|
|
7
|
-
stays source-agnostic.
|
|
3
|
+
**The binding layer that keeps the directory honest.** [`identity-directory`](../identity-directory) can promise "indexer proposes, on-chain confirms" only because its core never touches a real data source — it declares ports, and this package implements them. That separation is enforced, not aspirational: this is the **one package allowed to import `agent-naming`** (spec 100 §4 / [ADR-0015](../../docs/architecture/decisions/0015-identity-directory-is-an-evidence-backed-read-model.md)), so every naming read in the identity stack flows through one auditable seam. Adapters translate sources into ports and add no policy of their own.
|
|
4
|
+
|
|
5
|
+
Part of [agenticprimitives](../../README.md) — the trust substrate for the agent economy: one canonical Smart Agent identity with custody, delegation, naming, credentials, and audit evidence designed as one system.
|
|
8
6
|
|
|
9
7
|
## What's here
|
|
10
8
|
|
|
@@ -35,14 +33,33 @@ const dir = createDirectory({
|
|
|
35
33
|
});
|
|
36
34
|
```
|
|
37
35
|
|
|
36
|
+
## How it's different
|
|
37
|
+
|
|
38
|
+
The competing pattern is the **monolithic indexer/resolver SDK** — one client that talks to every source and bakes resolution policy into the data access. The cost shows up later: you cannot swap a source, cannot audit which mechanism answered a query, and the index silently becomes authoritative. The ports-and-adapters split here means:
|
|
39
|
+
|
|
40
|
+
- **Sources are swappable.** Naming, on-chain reads, and the indexer are independent factories; a new source for an existing port is one new factory, not a rewrite.
|
|
41
|
+
- **Authority placement is visible in the types.** `confirmsCredential` is a live on-chain membership check, the indexer is a proposer — the interfaces make it impossible to confuse the two.
|
|
42
|
+
- **No adapter ever escalates.** Each port is one mechanism; there is no `try naming, catch → on-chain` fallback anywhere ([ADR-0013](../../docs/architecture/decisions/0013-no-silent-fallbacks.md)), and reads are `readContract`/`getCode` only — never `eth_getLogs` ([ADR-0012](../../docs/architecture/decisions/0012-no-eth-getlogs-in-product-read-paths.md)).
|
|
43
|
+
|
|
38
44
|
## Boundaries
|
|
39
45
|
|
|
40
|
-
- `confirmsCredential` is **app-wired** — the on-chain membership getter is
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
- `confirmsCredential` is **app-wired** — the on-chain membership getter is contract- and credential-kind-specific (an EOA address vs a passkey `credentialIdDigest`), so this package does not guess it. It MUST reflect the *current* set so a revoked credential returns `false` (the directory drops it). Never wire it to a cached or event-derived list that could revive a revoked credential.
|
|
47
|
+
- The in-memory indexer is **non-authoritative** — it proposes candidates; the directory confirms them on-chain. The production indexer is a SPARQL/GraphDB adapter (spec 225 §7), landing later.
|
|
48
|
+
- CAIP-10 here is **eip155-only glue**; the canonical multi-namespace builder is `@agenticprimitives/agent-profile` (`/caip10`), deliberately kept out of this adapter's dependency set.
|
|
49
|
+
|
|
50
|
+
## Validation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pnpm --filter @agenticprimitives/identity-directory build # core dist (vitest resolution)
|
|
54
|
+
pnpm --filter @agenticprimitives/identity-directory-adapters typecheck
|
|
55
|
+
pnpm --filter @agenticprimitives/identity-directory-adapters test
|
|
56
|
+
pnpm check:forbidden-terms
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Status
|
|
60
|
+
|
|
61
|
+
Testnet/pilot-ready. Production launch is gated on the public checklist in the root [`README.md`](../../README.md#status--honest-version) — including third-party contract audit and governance key rotation. Track every security finding live in [`docs/audits/findings.yaml`](../../docs/audits/findings.yaml). The shipped indexer is the in-memory reference (demo + tests); the production SPARQL/GraphDB adapter is roadmap.
|
|
62
|
+
|
|
63
|
+
## License
|
|
64
|
+
|
|
65
|
+
UNLICENSED (internal monorepo, not published).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agenticprimitives/identity-directory-adapters",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.7",
|
|
4
4
|
"description": "Port implementations for @agenticprimitives/identity-directory: NamingPort (wraps agent-naming), OnChainReadPort (viem readContract), IndexerPort (in-memory; SPARQL/GraphDB later). The one composition layer allowed to import agent-naming (spec 100 §4 / ADR-0015).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"viem": "^2.52.2",
|
|
35
|
-
"@agenticprimitives/agent-naming": "1.0.0-alpha.
|
|
36
|
-
"@agenticprimitives/identity-directory": "1.0.0-alpha.
|
|
37
|
-
"@agenticprimitives/types": "1.0.0-alpha.
|
|
35
|
+
"@agenticprimitives/agent-naming": "1.0.0-alpha.7",
|
|
36
|
+
"@agenticprimitives/identity-directory": "1.0.0-alpha.7",
|
|
37
|
+
"@agenticprimitives/types": "1.0.0-alpha.7"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"vitest": "^4.1.8"
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"build": "tsc -p tsconfig.build.json",
|
|
51
51
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
52
52
|
"test": "vitest run",
|
|
53
|
-
"test:unit": "vitest run test/unit",
|
|
53
|
+
"test:unit": "vitest run test/unit --passWithNoTests",
|
|
54
54
|
"test:integration": "vitest run test/integration --passWithNoTests",
|
|
55
55
|
"test:watch": "vitest",
|
|
56
56
|
"clean": "rm -rf dist"
|