@agenticprimitives/identity-directory-adapters 1.0.0-alpha.45 → 1.0.0-alpha.47

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/dist/caip10.d.ts CHANGED
@@ -2,6 +2,11 @@ import type { Address, CanonicalAgentId } from '@agenticprimitives/types';
2
2
  export declare const EIP155_NAMESPACE: "eip155";
3
3
  /** Build an eip155 `CanonicalAgentId` from a chainId + EVM address (lowercased). */
4
4
  export declare function toCanonicalAgentId(chainId: number, address: Address): CanonicalAgentId;
5
+ /** Throws unless `chainId` is a positive safe integer. */
6
+ export declare function assertChainId(chainId: number): void;
7
+ /** The chain an eip155 `CanonicalAgentId` names. Throws on a non-eip155 id or a chain reference that is not a
8
+ * canonical positive integer. An adapter bound to ONE chain answers only for ids of that chain. */
9
+ export declare function chainIdOf(id: CanonicalAgentId): number;
5
10
  /** Extract the EVM address from an eip155 `CanonicalAgentId`. Throws on a non-eip155 id or a malformed address. */
6
11
  export declare function addressOf(id: CanonicalAgentId): Address;
7
12
  //# sourceMappingURL=caip10.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"caip10.d.ts","sourceRoot":"","sources":["../src/caip10.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,eAAO,MAAM,gBAAgB,EAAG,QAAiB,CAAC;AAElD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAEtF;AAED,mHAAmH;AACnH,wBAAgB,SAAS,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAavD"}
1
+ {"version":3,"file":"caip10.d.ts","sourceRoot":"","sources":["../src/caip10.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,eAAO,MAAM,gBAAgB,EAAG,QAAiB,CAAC;AAElD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAQtF;AAID,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAInD;AAED;oGACoG;AACpG,wBAAgB,SAAS,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAQtD;AAED,mHAAmH;AACnH,wBAAgB,SAAS,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAcvD"}
package/dist/caip10.js CHANGED
@@ -8,10 +8,35 @@
8
8
  export const EIP155_NAMESPACE = 'eip155';
9
9
  /** Build an eip155 `CanonicalAgentId` from a chainId + EVM address (lowercased). */
10
10
  export function toCanonicalAgentId(chainId, address) {
11
+ // A chain id is declared or it is an error (spec 445 / COV-33): `eip155:NaN:0x…` and `eip155:0:0x…` are ids of
12
+ // no chain, and an id with a malformed address is an id of no agent.
13
+ assertChainId(chainId);
14
+ if (typeof address !== 'string' || !ADDRESS_RE.test(address)) {
15
+ throw new Error(`identity-directory-adapters: not a 20-byte address: "${String(address)}"`);
16
+ }
11
17
  return `${EIP155_NAMESPACE}:${chainId}:${address.toLowerCase()}`;
12
18
  }
19
+ const ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;
20
+ /** Throws unless `chainId` is a positive safe integer. */
21
+ export function assertChainId(chainId) {
22
+ if (!Number.isSafeInteger(chainId) || chainId <= 0) {
23
+ throw new Error(`identity-directory-adapters: chainId must be a declared positive integer, got "${String(chainId)}"`);
24
+ }
25
+ }
26
+ /** The chain an eip155 `CanonicalAgentId` names. Throws on a non-eip155 id or a chain reference that is not a
27
+ * canonical positive integer. An adapter bound to ONE chain answers only for ids of that chain. */
28
+ export function chainIdOf(id) {
29
+ const parts = typeof id === 'string' ? id.split(':') : [];
30
+ if (parts.length !== 3 || parts[0] !== EIP155_NAMESPACE || !/^[1-9][0-9]*$/.test(parts[1] ?? '')) {
31
+ throw new Error(`identity-directory-adapters: expected an eip155 CanonicalAgentId with a chain reference, got "${String(id)}"`);
32
+ }
33
+ const chainId = Number(parts[1]);
34
+ assertChainId(chainId);
35
+ return chainId;
36
+ }
13
37
  /** Extract the EVM address from an eip155 `CanonicalAgentId`. Throws on a non-eip155 id or a malformed address. */
14
38
  export function addressOf(id) {
39
+ chainIdOf(id); // the chain reference is part of the id: `eip155:abc:0x…` is not one
15
40
  const parts = id.split(':');
16
41
  if (parts.length !== 3 || parts[0] !== EIP155_NAMESPACE) {
17
42
  throw new Error(`identity-directory-adapters: expected an eip155 CanonicalAgentId, got "${id}"`);
@@ -1 +1 @@
1
- {"version":3,"file":"caip10.js","sourceRoot":"","sources":["../src/caip10.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,iEAAiE;AACjE,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,oDAAoD;AAIpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAiB,CAAC;AAElD,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,OAAgB;IAClE,OAAO,GAAG,gBAAgB,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,EAAsB,CAAC;AACvF,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,SAAS,CAAC,EAAoB;IAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,0EAA0E,EAAE,GAAG,CAAC,CAAC;IACnG,CAAC;IACD,4FAA4F;IAC5F,oGAAoG;IACpG,iDAAiD;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,kFAAkF,EAAE,GAAG,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,IAAe,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"caip10.js","sourceRoot":"","sources":["../src/caip10.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,iEAAiE;AACjE,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,oDAAoD;AAIpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAiB,CAAC;AAElD,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,OAAgB;IAClE,+GAA+G;IAC/G,qEAAqE;IACrE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,wDAAwD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,GAAG,gBAAgB,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,EAAsB,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,kFAAkF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxH,CAAC;AACH,CAAC;AAED;oGACoG;AACpG,MAAM,UAAU,SAAS,CAAC,EAAoB;IAC5C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,iGAAiG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,SAAS,CAAC,EAAoB;IAC5C,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,qEAAqE;IACpF,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,0EAA0E,EAAE,GAAG,CAAC,CAAC;IACnG,CAAC;IACD,4FAA4F;IAC5F,oGAAoG;IACpG,iDAAiD;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,kFAAkF,EAAE,GAAG,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,IAAe,CAAC;AACzB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { toCanonicalAgentId, addressOf, EIP155_NAMESPACE } from './caip10.js';
1
+ export { toCanonicalAgentId, addressOf, chainIdOf, assertChainId, EIP155_NAMESPACE } from './caip10.js';
2
2
  export { makeNamingPort, type NamingReads } from './naming.js';
3
3
  export { makeOnChainReadPort, viemExists, type OnChainReaders } from './onchain.js';
4
4
  export { createInMemoryIndexer, type IndexerEntry } from './indexer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@
8
8
  // - capability.manifest.json — boundary
9
9
  // - ../../specs/223-identity-directory.md — the contract
10
10
  // - ../identity-directory — the ports these implement
11
- export { toCanonicalAgentId, addressOf, EIP155_NAMESPACE } from './caip10.js';
11
+ export { toCanonicalAgentId, addressOf, chainIdOf, assertChainId, EIP155_NAMESPACE } from './caip10.js';
12
12
  export { makeNamingPort } from './naming.js';
13
13
  export { makeOnChainReadPort, viemExists } from './onchain.js';
14
14
  export { createInMemoryIndexer } from './indexer.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,qEAAqE;AACrE,EAAE;AACF,OAAO;AACP,0CAA0C;AAC1C,2DAA2D;AAC3D,wDAAwD;AAExD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAqB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,qEAAqE;AACrE,EAAE;AACF,OAAO;AACP,0CAA0C;AAC1C,2DAA2D;AAC3D,wDAAwD;AAExD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAqB,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,uCAAuC,CAAC;AAEvF,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,YAAY,EAAO,GAC3B,WAAW,GAAG;IAAE,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAyBlD"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,uCAAuC,CAAC;AAEvF,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,YAAY,EAAO,GAC3B,WAAW,GAAG;IAAE,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CA2BlD"}
package/dist/indexer.js CHANGED
@@ -23,6 +23,9 @@ export function createInMemoryIndexer(entries = []) {
23
23
  return linksFor(principal.kind, principal.id);
24
24
  },
25
25
  async agentsByOidcSubject(iss, sub) {
26
+ // `iss#sub` is one key only while `iss` holds no `#` (spec 445 / COV-31).
27
+ if (typeof iss !== 'string' || iss.includes('#') || iss.length === 0 || typeof sub !== 'string' || sub.length === 0)
28
+ return [];
26
29
  return linksFor('oidc', `${iss}#${sub}`);
27
30
  },
28
31
  add(entry) {
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,wEAAwE;AACxE,iFAAiF;AAejF,uDAAuD;AACvD,MAAM,UAAU,qBAAqB,CACnC,UAA0B,EAAE;IAE5B,MAAM,KAAK,GAAmB,CAAC,GAAG,OAAO,CAAC,CAAC;IAE3C,SAAS,QAAQ,CAAC,IAAiC,EAAE,EAAU;QAC7D,OAAO,KAAK;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC;aAC/D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,UAAU;YACpC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,WAAW;YACzB,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO;QACL,KAAK,CAAC,kBAAkB,CAAC,SAAS;YAChC,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG;YAChC,OAAO,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,GAAG,CAAC,KAAK;YACP,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,wEAAwE;AACxE,iFAAiF;AAejF,uDAAuD;AACvD,MAAM,UAAU,qBAAqB,CACnC,UAA0B,EAAE;IAE5B,MAAM,KAAK,GAAmB,CAAC,GAAG,OAAO,CAAC,CAAC;IAE3C,SAAS,QAAQ,CAAC,IAAiC,EAAE,EAAU;QAC7D,OAAO,KAAK;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC;aAC/D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,UAAU;YACpC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,WAAW;YACzB,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO;QACL,KAAK,CAAC,kBAAkB,CAAC,SAAS;YAChC,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG;YAChC,0EAA0E;YAC1E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC/H,OAAO,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,GAAG,CAAC,KAAK;YACP,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,gGAAgG;AAChG,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,gBAAgB,CAAC,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,CAkBnE"}
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,gGAAgG;AAChG,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,gBAAgB,CAAC,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,CAsBnE"}
package/dist/naming.js CHANGED
@@ -5,8 +5,9 @@
5
5
  // adapter binds a configured chainId to lift the result. A `null` from the
6
6
  // client is a terminal "no such name" (ADR-0013) — the directory core does not
7
7
  // escalate to another port.
8
- import { toCanonicalAgentId, addressOf } from './caip10.js';
8
+ import { toCanonicalAgentId, addressOf, assertChainId, chainIdOf } from './caip10.js';
9
9
  export function makeNamingPort(opts) {
10
+ assertChainId(opts.chainId); // declared, or the port is not built
10
11
  return {
11
12
  async forward(name) {
12
13
  const addr = await opts.client.resolveName(name);
@@ -17,6 +18,10 @@ export function makeNamingPort(opts) {
17
18
  // reverse here (returns null rather than throwing into the read path).
18
19
  let address;
19
20
  try {
21
+ // An id of ANOTHER chain has no name on this registry (spec 445 / COV-33): the address was read as if
22
+ // it were this chain's, so `eip155:1:0x…` came back with whatever that address is called here.
23
+ if (chainIdOf(id) !== opts.chainId)
24
+ return null;
20
25
  address = addressOf(id);
21
26
  }
22
27
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,4BAA4B;AAK5B,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW5D,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,EAAE;YACd,wEAAwE;YACxE,uEAAuE;YACvE,IAAI,OAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,4BAA4B;AAK5B,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAWtF,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC;IAClE,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,EAAE;YACd,wEAAwE;YACxE,uEAAuE;YACvE,IAAI,OAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,sGAAsG;gBACtG,+FAA+F;gBAC/F,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO;oBAAE,OAAO,IAAI,CAAC;gBAChD,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/onchain.d.ts CHANGED
@@ -19,5 +19,5 @@ export declare function makeOnChainReadPort(readers: OnChainReaders): OnChainRea
19
19
  * at its address (deployed). Counterfactual (not-yet-deployed) agents read as
20
20
  * `false` — wire a factory/initCode check if you need to treat them as existing.
21
21
  */
22
- export declare function viemExists(client: Pick<PublicClient, 'getCode'>): (id: CanonicalAgentId) => Promise<boolean>;
22
+ export declare function viemExists(client: Pick<PublicClient, 'getCode'>, chainId: number): (id: CanonicalAgentId) => Promise<boolean>;
23
23
  //# sourceMappingURL=onchain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"onchain.d.ts","sourceRoot":"","sources":["../src/onchain.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5F;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAK5E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAK5G"}
1
+ {"version":3,"file":"onchain.d.ts","sourceRoot":"","sources":["../src/onchain.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5F;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAK5E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAS7H"}
package/dist/onchain.js CHANGED
@@ -6,7 +6,7 @@
6
6
  // getter is contract- AND credential-kind-specific (an EOA address vs a passkey
7
7
  // credentialIdDigest read differently), so it is WIRED BY THE APP rather than
8
8
  // guessed here. The adapter assembles the port from the two readers.
9
- import { addressOf } from './caip10.js';
9
+ import { addressOf, assertChainId, chainIdOf } from './caip10.js';
10
10
  /** Assemble an OnChainReadPort from the two reader functions. */
11
11
  export function makeOnChainReadPort(readers) {
12
12
  return {
@@ -19,8 +19,13 @@ export function makeOnChainReadPort(readers) {
19
19
  * at its address (deployed). Counterfactual (not-yet-deployed) agents read as
20
20
  * `false` — wire a factory/initCode check if you need to treat them as existing.
21
21
  */
22
- export function viemExists(client) {
22
+ export function viemExists(client, chainId) {
23
+ // `chainId` is the chain THIS client reads, declared by the caller (spec 445 / COV-33). Without it the reader
24
+ // answered `exists` for an id of any chain from whatever chain the client happened to be on.
25
+ assertChainId(chainId);
23
26
  return async (id) => {
27
+ if (chainIdOf(id) !== chainId)
28
+ return false;
24
29
  const code = await client.getCode({ address: addressOf(id) });
25
30
  return !!code && code !== '0x';
26
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"onchain.js","sourceRoot":"","sources":["../src/onchain.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,qEAAqE;AAKrE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAcxC,iEAAiE;AACjE,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,OAAO;QACL,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,kBAAkB,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,SAAS,CAAC;KACjF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAqC;IAC9D,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"onchain.js","sourceRoot":"","sources":["../src/onchain.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,qEAAqE;AAKrE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAclE,iEAAiE;AACjE,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,OAAO;QACL,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,kBAAkB,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,SAAS,CAAC;KACjF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAqC,EAAE,OAAe;IAC/E,8GAA8G;IAC9G,6FAA6F;IAC7F,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE;QAClB,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenticprimitives/identity-directory-adapters",
3
- "version": "1.0.0-alpha.45",
3
+ "version": "1.0.0-alpha.47",
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
  "homepage": "https://agenticprimitives.dev",
6
6
  "bugs": {
@@ -36,9 +36,9 @@
36
36
  },
37
37
  "peerDependencies": {
38
38
  "viem": "^2.52.2",
39
- "@agenticprimitives/agent-naming": "^1.0.0-alpha.45",
40
- "@agenticprimitives/types": "^1.0.0-alpha.45",
41
- "@agenticprimitives/identity-directory": "^1.0.0-alpha.45"
39
+ "@agenticprimitives/agent-naming": "^1.0.0-alpha.47",
40
+ "@agenticprimitives/identity-directory": "^1.0.0-alpha.47",
41
+ "@agenticprimitives/types": "^1.0.0-alpha.47"
42
42
  },
43
43
  "devDependencies": {
44
44
  "vitest": "^4.1.11"