@agenticprimitives/agent-profile 1.0.0-alpha.22 → 1.0.0-alpha.24

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 (85) hide show
  1. package/README.md +54 -6
  2. package/dist/a2a/binding.d.ts +99 -0
  3. package/dist/a2a/binding.d.ts.map +1 -0
  4. package/dist/a2a/binding.js +142 -0
  5. package/dist/a2a/binding.js.map +1 -0
  6. package/dist/a2a/canonical.d.ts +31 -0
  7. package/dist/a2a/canonical.d.ts.map +1 -0
  8. package/dist/a2a/canonical.js +43 -0
  9. package/dist/a2a/canonical.js.map +1 -0
  10. package/dist/a2a/field-binding.d.ts +125 -0
  11. package/dist/a2a/field-binding.d.ts.map +1 -0
  12. package/dist/a2a/field-binding.js +242 -0
  13. package/dist/a2a/field-binding.js.map +1 -0
  14. package/dist/a2a/import.d.ts +39 -0
  15. package/dist/a2a/import.d.ts.map +1 -0
  16. package/dist/a2a/import.js +134 -0
  17. package/dist/a2a/import.js.map +1 -0
  18. package/dist/a2a/index.d.ts +13 -0
  19. package/dist/a2a/index.d.ts.map +1 -0
  20. package/dist/a2a/index.js +24 -0
  21. package/dist/a2a/index.js.map +1 -0
  22. package/dist/a2a/jws.d.ts +76 -0
  23. package/dist/a2a/jws.d.ts.map +1 -0
  24. package/dist/a2a/jws.js +186 -0
  25. package/dist/a2a/jws.js.map +1 -0
  26. package/dist/a2a/playbook-binding.d.ts +29 -0
  27. package/dist/a2a/playbook-binding.d.ts.map +1 -0
  28. package/dist/a2a/playbook-binding.js +65 -0
  29. package/dist/a2a/playbook-binding.js.map +1 -0
  30. package/dist/a2a/pointer.d.ts +13 -0
  31. package/dist/a2a/pointer.d.ts.map +1 -0
  32. package/dist/a2a/pointer.js +78 -0
  33. package/dist/a2a/pointer.js.map +1 -0
  34. package/dist/a2a/release.d.ts +77 -0
  35. package/dist/a2a/release.d.ts.map +1 -0
  36. package/dist/a2a/release.js +197 -0
  37. package/dist/a2a/release.js.map +1 -0
  38. package/dist/a2a/types.d.ts +312 -0
  39. package/dist/a2a/types.d.ts.map +1 -0
  40. package/dist/a2a/types.js +32 -0
  41. package/dist/a2a/types.js.map +1 -0
  42. package/dist/a2a/validation.d.ts +81 -0
  43. package/dist/a2a/validation.d.ts.map +1 -0
  44. package/dist/a2a/validation.js +477 -0
  45. package/dist/a2a/validation.js.map +1 -0
  46. package/dist/calls.d.ts +12 -0
  47. package/dist/calls.d.ts.map +1 -1
  48. package/dist/calls.js +16 -0
  49. package/dist/calls.js.map +1 -1
  50. package/dist/card.d.ts +12 -6
  51. package/dist/card.d.ts.map +1 -1
  52. package/dist/card.js +12 -6
  53. package/dist/card.js.map +1 -1
  54. package/dist/client.d.ts +4 -4
  55. package/dist/client.d.ts.map +1 -1
  56. package/dist/client.js +20 -2
  57. package/dist/client.js.map +1 -1
  58. package/dist/constants.d.ts +23 -1
  59. package/dist/constants.d.ts.map +1 -1
  60. package/dist/constants.js +30 -1
  61. package/dist/constants.js.map +1 -1
  62. package/dist/derived-type.d.ts +14 -0
  63. package/dist/derived-type.d.ts.map +1 -0
  64. package/dist/derived-type.js +56 -0
  65. package/dist/derived-type.js.map +1 -0
  66. package/dist/distribution.d.ts +32 -0
  67. package/dist/distribution.d.ts.map +1 -0
  68. package/dist/distribution.js +167 -0
  69. package/dist/distribution.js.map +1 -0
  70. package/dist/errors.d.ts +6 -0
  71. package/dist/errors.d.ts.map +1 -1
  72. package/dist/errors.js +11 -0
  73. package/dist/errors.js.map +1 -1
  74. package/dist/index.d.ts +7 -5
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +12 -5
  77. package/dist/index.js.map +1 -1
  78. package/dist/profile.d.ts +4 -4
  79. package/dist/profile.d.ts.map +1 -1
  80. package/dist/profile.js +12 -1
  81. package/dist/profile.js.map +1 -1
  82. package/dist/types.d.ts +104 -7
  83. package/dist/types.d.ts.map +1 -1
  84. package/package.json +13 -6
  85. package/spec.md +5 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/a2a/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAExB,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB,2GAA2G;AAC3G,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAEtF,+GAA+G;AAC/G,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,eAAe,CAAC;IAC7B,6GAA6G;IAC7G,iBAAiB,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC;IAC3E,+FAA+F;IAC/F,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;IAChD,6EAA6E;IAC7E,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC/C,mGAAmG;IACnG,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAID,wBAAgB,SAAS,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,GAAG,OAAO,CAEjF;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,EAAE,IAAI,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAuRvH;AAiCD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAqBvD"}
@@ -0,0 +1,477 @@
1
+ /**
2
+ * Pure validation of an A2A Agent Card (spec 347 §4.4) → `ProjectionDiagnosticV1[]`.
3
+ *
4
+ * Four families, all PURE (no network, no clock, no randomness):
5
+ * structural — required fields, one-of security schemes, absolute HTTPS URLs (production), MIME shape,
6
+ * unique skill ids, security refs resolve;
7
+ * serialization — JCS reproducible (canonicalize twice, compare);
8
+ * semantic — ≥1 interface (first = preferred), `extendedAgentCard` only with a policy, push claims
9
+ * need runtime evidence (`CAPABILITY_UNVERIFIED`), version ≠ protocol version, catalog
10
+ * agreement without an `override` binding (`CATALOG_DIVERGENCE`, spec 347 §13(b));
11
+ * security/privacy — secret-looking strings, loopback/private/link-local/metadata URLs, vault refs,
12
+ * PII patterns (warning).
13
+ * Runtime checks (reachability, handshake, TLS, digest-at-well-known) are a separate app-side port —
14
+ * deliberately NOT here.
15
+ */
16
+ import { canonicalCardJson } from './canonical.js';
17
+ import { joinPointer } from './pointer.js';
18
+ import { A2A_SECURITY_SCHEME_TYPES, } from './types.js';
19
+ /** Stable diagnostic codes. Each is emitted by exactly one check; consumers key on these, not messages. */
20
+ export const DIAGNOSTIC_CODES = {
21
+ // structural
22
+ STRUCT_MISSING_FIELD: 'STRUCT_MISSING_FIELD',
23
+ STRUCT_INVALID_TYPE: 'STRUCT_INVALID_TYPE',
24
+ PROTOCOL_VERSION_MISMATCH: 'PROTOCOL_VERSION_MISMATCH',
25
+ URL_NOT_ABSOLUTE: 'URL_NOT_ABSOLUTE',
26
+ URL_NOT_HTTPS: 'URL_NOT_HTTPS',
27
+ MIME_TYPE_INVALID: 'MIME_TYPE_INVALID',
28
+ SKILL_ID_DUPLICATE: 'SKILL_ID_DUPLICATE',
29
+ SECURITY_SCHEME_INVALID: 'SECURITY_SCHEME_INVALID',
30
+ SECURITY_REF_UNRESOLVED: 'SECURITY_REF_UNRESOLVED',
31
+ EXTENSION_URI_INVALID: 'EXTENSION_URI_INVALID',
32
+ // serialization
33
+ CANONICALIZATION_FAILED: 'CANONICALIZATION_FAILED',
34
+ JCS_NOT_REPRODUCIBLE: 'JCS_NOT_REPRODUCIBLE',
35
+ // semantic
36
+ NO_INTERFACE: 'NO_INTERFACE',
37
+ INTERFACE_BINDING_UNKNOWN: 'INTERFACE_BINDING_UNKNOWN',
38
+ EXTENDED_CARD_WITHOUT_POLICY: 'EXTENDED_CARD_WITHOUT_POLICY',
39
+ CAPABILITY_UNVERIFIED: 'CAPABILITY_UNVERIFIED',
40
+ VERSION_EQUALS_PROTOCOL_VERSION: 'VERSION_EQUALS_PROTOCOL_VERSION',
41
+ PROVIDER_MISSING: 'PROVIDER_MISSING',
42
+ CATALOG_DIVERGENCE: 'CATALOG_DIVERGENCE',
43
+ // security / privacy
44
+ SECRET_MATERIAL_DETECTED: 'SECRET_MATERIAL_DETECTED',
45
+ PRIVATE_URL_DETECTED: 'PRIVATE_URL_DETECTED',
46
+ VAULT_REFERENCE_DETECTED: 'VAULT_REFERENCE_DETECTED',
47
+ PII_SUSPECTED: 'PII_SUSPECTED',
48
+ // import (emitted by `import.ts`)
49
+ UNKNOWN_FIELD: 'UNKNOWN_FIELD',
50
+ SIGNATURE_INVALID: 'SIGNATURE_INVALID',
51
+ SIGNATURE_UNVERIFIED: 'SIGNATURE_UNVERIFIED',
52
+ SOURCE_NOT_JSON: 'SOURCE_NOT_JSON',
53
+ };
54
+ export function hasErrors(diagnostics) {
55
+ return diagnostics.some((d) => d.severity === 'error');
56
+ }
57
+ /** Validate a card. Returns diagnostics; never throws on card content. */
58
+ export function validateA2ACard(card, opts) {
59
+ const out = [];
60
+ const c = card;
61
+ const prod = opts.environment === 'production';
62
+ const err = (code, sourcePointer, message, explanation) => {
63
+ out.push({ code, severity: 'error', sourcePointer, message, ...(explanation ? { explanation } : {}) });
64
+ };
65
+ const warn = (code, sourcePointer, message, explanation) => {
66
+ out.push({ code, severity: 'warning', sourcePointer, message, ...(explanation ? { explanation } : {}) });
67
+ };
68
+ // ── structural ──────────────────────────────────────────────────────────────────────────────────
69
+ const reqString = (k) => {
70
+ const v = c[k];
71
+ if (v === undefined || v === null)
72
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, `/${k}`, `"${k}" is required`);
73
+ else if (typeof v !== 'string' || v.length === 0)
74
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, `/${k}`, `"${k}" must be a non-empty string`);
75
+ };
76
+ reqString('protocolVersion');
77
+ reqString('name');
78
+ reqString('description');
79
+ reqString('version');
80
+ const reqStringArray = (k) => {
81
+ const v = c[k];
82
+ if (v === undefined)
83
+ return void err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, `/${k}`, `"${k}" is required`);
84
+ if (!Array.isArray(v) || v.some((x) => typeof x !== 'string')) {
85
+ return void err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, `/${k}`, `"${k}" must be an array of MIME types`);
86
+ }
87
+ v.forEach((m, i) => {
88
+ if (!MIME_RE.test(m))
89
+ err(DIAGNOSTIC_CODES.MIME_TYPE_INVALID, joinPointer(k, i), `"${m}" is not a MIME type`);
90
+ });
91
+ };
92
+ reqStringArray('defaultInputModes');
93
+ reqStringArray('defaultOutputModes');
94
+ const pinned = opts.protocolVersion ?? '1.0';
95
+ if (typeof c.protocolVersion === 'string' && c.protocolVersion !== pinned) {
96
+ err(DIAGNOSTIC_CODES.PROTOCOL_VERSION_MISMATCH, '/protocolVersion', `protocolVersion "${c.protocolVersion}" ≠ pinned "${pinned}"`);
97
+ }
98
+ if (typeof c.version === 'string' && typeof c.protocolVersion === 'string' && c.version === c.protocolVersion) {
99
+ err(DIAGNOSTIC_CODES.VERSION_EQUALS_PROTOCOL_VERSION, '/version', '"version" is the AGENT IMPLEMENTATION version and equals the protocol version', 'A2A `version` describes the agent, not the protocol. A card whose version is "1.0" because the protocol is 1.0 is almost always a copy-paste error.');
100
+ }
101
+ if (c.capabilities === undefined)
102
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, '/capabilities', '"capabilities" is required');
103
+ else if (c.capabilities === null || typeof c.capabilities !== 'object' || Array.isArray(c.capabilities)) {
104
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, '/capabilities', '"capabilities" must be an object');
105
+ }
106
+ // URLs
107
+ const urlCheck = (pointer, v, required) => {
108
+ if (v === undefined) {
109
+ if (required)
110
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, pointer, 'url is required');
111
+ return;
112
+ }
113
+ if (typeof v !== 'string')
114
+ return void err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, pointer, 'url must be a string');
115
+ let u;
116
+ try {
117
+ u = new URL(v);
118
+ }
119
+ catch {
120
+ return void err(DIAGNOSTIC_CODES.URL_NOT_ABSOLUTE, pointer, `"${v}" is not an absolute URL`);
121
+ }
122
+ if (u.protocol !== 'https:') {
123
+ const msg = `"${v}" is not https`;
124
+ if (prod)
125
+ err(DIAGNOSTIC_CODES.URL_NOT_HTTPS, pointer, msg, 'Production cards MUST advertise HTTPS endpoints (ADR-0057).');
126
+ else
127
+ warn(DIAGNOSTIC_CODES.URL_NOT_HTTPS, pointer, msg);
128
+ }
129
+ if (isPrivateHost(u.hostname)) {
130
+ const msg = `"${v}" points at a loopback / private / link-local / metadata host`;
131
+ if (prod)
132
+ err(DIAGNOSTIC_CODES.PRIVATE_URL_DETECTED, pointer, msg);
133
+ else
134
+ warn(DIAGNOSTIC_CODES.PRIVATE_URL_DETECTED, pointer, msg);
135
+ }
136
+ };
137
+ // interfaces
138
+ const ifaces = c.supportedInterfaces;
139
+ if (ifaces === undefined)
140
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, '/supportedInterfaces', '"supportedInterfaces" is required');
141
+ else if (!Array.isArray(ifaces))
142
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, '/supportedInterfaces', '"supportedInterfaces" must be an array');
143
+ else if (ifaces.length === 0) {
144
+ err(DIAGNOSTIC_CODES.NO_INTERFACE, '/supportedInterfaces', 'a card MUST list at least one interface (the first is preferred)');
145
+ }
146
+ else {
147
+ ifaces.forEach((i, idx) => {
148
+ const p = joinPointer('supportedInterfaces', idx);
149
+ if (!i || typeof i !== 'object')
150
+ return void err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, p, 'interface must be an object');
151
+ urlCheck(`${p}/url`, i.url, true);
152
+ const pb = i.protocolBinding;
153
+ if (typeof pb !== 'string' || pb.length === 0)
154
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, `${p}/protocolBinding`, 'protocolBinding is required');
155
+ else if (!KNOWN_BINDINGS.has(pb))
156
+ warn(DIAGNOSTIC_CODES.INTERFACE_BINDING_UNKNOWN, `${p}/protocolBinding`, `protocolBinding "${pb}" is not a standard A2A binding`);
157
+ });
158
+ }
159
+ if (c.provider !== undefined) {
160
+ if (!c.provider || typeof c.provider !== 'object')
161
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, '/provider', 'provider must be an object');
162
+ else {
163
+ if (typeof c.provider.organization !== 'string' || !c.provider.organization)
164
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, '/provider/organization', 'provider.organization is required');
165
+ urlCheck('/provider/url', c.provider.url, true);
166
+ }
167
+ }
168
+ else {
169
+ warn(DIAGNOSTIC_CODES.PROVIDER_MISSING, '/provider', 'no provider declared — peers cannot tell who operates this agent');
170
+ }
171
+ urlCheck('/documentationUrl', c.documentationUrl, false);
172
+ urlCheck('/iconUrl', c.iconUrl, false);
173
+ // capabilities
174
+ const caps = (c.capabilities && typeof c.capabilities === 'object' ? c.capabilities : {});
175
+ for (const [k, v] of Object.entries(caps)) {
176
+ if (k === 'extensions') {
177
+ if (v !== undefined && !Array.isArray(v))
178
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, '/capabilities/extensions', 'extensions must be an array');
179
+ else
180
+ v?.forEach((e, i) => {
181
+ const p = joinPointer('capabilities', 'extensions', i);
182
+ const uri = e?.uri;
183
+ if (typeof uri !== 'string' || !isAbsoluteUri(uri))
184
+ err(DIAGNOSTIC_CODES.EXTENSION_URI_INVALID, `${p}/uri`, 'extension uri must be an absolute URI');
185
+ });
186
+ }
187
+ else if (v !== undefined && typeof v !== 'boolean') {
188
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, `/capabilities/${k}`, `capabilities.${k} must be a boolean`);
189
+ }
190
+ }
191
+ if (caps.extendedAgentCard === true && !opts.extendedCardPolicyConfigured) {
192
+ err(DIAGNOSTIC_CODES.EXTENDED_CARD_WITHOUT_POLICY, '/capabilities/extendedAgentCard', 'extendedAgentCard is true but no extended-card policy is configured');
193
+ }
194
+ if (caps.pushNotifications === true && opts.runtimeCapabilities?.pushNotifications !== true) {
195
+ out.push({
196
+ code: DIAGNOSTIC_CODES.CAPABILITY_UNVERIFIED,
197
+ severity: 'evidenceNeeded',
198
+ sourcePointer: '/capabilities/pushNotifications',
199
+ message: 'pushNotifications is claimed without runtime evidence',
200
+ explanation: 'pushNotifications is DERIVED by the runtime. A card may only claim it when the runtime declares a wired push sender (spec 347 §4.3).',
201
+ });
202
+ }
203
+ if (caps.streaming === true && opts.runtimeCapabilities && opts.runtimeCapabilities.streaming !== true) {
204
+ out.push({
205
+ code: DIAGNOSTIC_CODES.CAPABILITY_UNVERIFIED,
206
+ severity: 'evidenceNeeded',
207
+ sourcePointer: '/capabilities/streaming',
208
+ message: 'streaming is claimed but the runtime does not declare it',
209
+ });
210
+ }
211
+ // security schemes / requirements
212
+ const schemeNames = new Set();
213
+ if (c.securitySchemes !== undefined) {
214
+ if (!c.securitySchemes || typeof c.securitySchemes !== 'object' || Array.isArray(c.securitySchemes)) {
215
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, '/securitySchemes', 'securitySchemes must be an object');
216
+ }
217
+ else {
218
+ for (const [name, s] of Object.entries(c.securitySchemes)) {
219
+ schemeNames.add(name);
220
+ validateScheme(joinPointer('securitySchemes', name), s, err, urlCheck);
221
+ }
222
+ }
223
+ }
224
+ const reqCheck = (pointer, reqs) => {
225
+ if (reqs === undefined)
226
+ return;
227
+ if (!Array.isArray(reqs))
228
+ return void err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, pointer, 'securityRequirements must be an array');
229
+ reqs.forEach((r, i) => {
230
+ if (!r || typeof r !== 'object' || Array.isArray(r))
231
+ return void err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, `${pointer}/${i}`, 'requirement must be an object');
232
+ for (const [name, scopes] of Object.entries(r)) {
233
+ const p = joinPointer(...pointer.split('/').filter(Boolean), i, name);
234
+ if (!schemeNames.has(name))
235
+ err(DIAGNOSTIC_CODES.SECURITY_REF_UNRESOLVED, p, `security requirement "${name}" names no declared scheme`);
236
+ if (!Array.isArray(scopes) || scopes.some((x) => typeof x !== 'string'))
237
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, p, 'scopes must be an array of strings');
238
+ }
239
+ });
240
+ };
241
+ reqCheck('/securityRequirements', c.securityRequirements);
242
+ // skills
243
+ const skills = c.skills;
244
+ if (skills === undefined)
245
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, '/skills', '"skills" is required');
246
+ else if (!Array.isArray(skills))
247
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, '/skills', '"skills" must be an array');
248
+ else {
249
+ const seen = new Set();
250
+ skills.forEach((s, i) => {
251
+ const p = joinPointer('skills', i);
252
+ if (!s || typeof s !== 'object')
253
+ return void err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, p, 'skill must be an object');
254
+ const sk = s;
255
+ for (const k of ['id', 'name', 'description']) {
256
+ if (typeof sk[k] !== 'string' || sk[k].length === 0)
257
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, `${p}/${k}`, `skill.${k} is required`);
258
+ }
259
+ if (!Array.isArray(sk.tags) || sk.tags.some((t) => typeof t !== 'string'))
260
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, `${p}/tags`, 'skill.tags must be an array of strings');
261
+ if (typeof sk.id === 'string') {
262
+ if (seen.has(sk.id))
263
+ err(DIAGNOSTIC_CODES.SKILL_ID_DUPLICATE, `${p}/id`, `duplicate skill id "${sk.id}"`);
264
+ seen.add(sk.id);
265
+ }
266
+ for (const k of ['inputModes', 'outputModes']) {
267
+ sk[k]?.forEach((m, j) => {
268
+ if (typeof m !== 'string' || !MIME_RE.test(m))
269
+ err(DIAGNOSTIC_CODES.MIME_TYPE_INVALID, joinPointer('skills', i, k, j), `"${String(m)}" is not a MIME type`);
270
+ });
271
+ }
272
+ reqCheck(`${p}/securityRequirements`, sk.securityRequirements);
273
+ });
274
+ }
275
+ // ── serialization ───────────────────────────────────────────────────────────────────────────────
276
+ try {
277
+ const a = canonicalCardJson(card);
278
+ const b = canonicalCardJson(JSON.parse(a));
279
+ if (a !== b)
280
+ err(DIAGNOSTIC_CODES.JCS_NOT_REPRODUCIBLE, '', 'JCS canonicalization is not reproducible for this card');
281
+ }
282
+ catch (e) {
283
+ err(DIAGNOSTIC_CODES.CANONICALIZATION_FAILED, '', `card cannot be canonicalized: ${e.message}`);
284
+ }
285
+ // ── semantic: catalog agreement (spec 347 §13(b)) ───────────────────────────────────────────────
286
+ const bindingAt = (pointer) => opts.fieldBindings?.[pointer];
287
+ const isOverridden = (pointer, parent) => bindingAt(pointer)?.mode === 'override' || bindingAt(parent)?.mode === 'override';
288
+ if (opts.surfaceInterfaces && Array.isArray(ifaces)) {
289
+ const key = (i) => `${i.protocolBinding}${i.url}`;
290
+ const catalog = new Set(opts.surfaceInterfaces.map(key));
291
+ const onCard = new Set(ifaces.filter((i) => i && typeof i === 'object').map(key));
292
+ ifaces.forEach((i, idx) => {
293
+ if (i && typeof i === 'object' && !catalog.has(key(i)) && !isOverridden(joinPointer('supportedInterfaces', idx), '/supportedInterfaces')) {
294
+ err(DIAGNOSTIC_CODES.CATALOG_DIVERGENCE, joinPointer('supportedInterfaces', idx), `interface ${i.protocolBinding} ${i.url} is not served per the surface catalog and carries no override binding`, 'surface-catalog is the only generator of inherited interface fields; a hand-edit must be a recorded override (ADR-0062).');
295
+ }
296
+ });
297
+ for (const s of opts.surfaceInterfaces) {
298
+ if (!onCard.has(key(s)) && !isOverridden('/supportedInterfaces', '/supportedInterfaces')) {
299
+ err(DIAGNOSTIC_CODES.CATALOG_DIVERGENCE, '/supportedInterfaces', `catalog interface ${s.protocolBinding} ${s.url} is missing from the card without an override binding`);
300
+ }
301
+ }
302
+ }
303
+ if (opts.catalogSkills && Array.isArray(skills)) {
304
+ const catalogIds = new Set(opts.catalogSkills.map((s) => s.id));
305
+ const cardIds = new Set();
306
+ skills.forEach((s, idx) => {
307
+ if (!s || typeof s.id !== 'string')
308
+ return;
309
+ cardIds.add(s.id);
310
+ if (catalogIds.has(s.id))
311
+ return;
312
+ const b = bindingAt(joinPointer('skills', idx)) ?? bindingAt('/skills');
313
+ const legit = b?.mode === 'override' || b?.source.kind === 'capability-claims';
314
+ if (!legit) {
315
+ err(DIAGNOSTIC_CODES.CATALOG_DIVERGENCE, joinPointer('skills', idx), `skill "${s.id}" is not in the surface catalog and carries no override / capability-claims binding`, 'Skills are inherited from surface-catalog (runtime-served) or public capability claims; anything else is an unrecorded hand-edit (ADR-0062).');
316
+ }
317
+ });
318
+ for (const id of catalogIds) {
319
+ if (!cardIds.has(id) && bindingAt('/skills')?.mode !== 'override') {
320
+ err(DIAGNOSTIC_CODES.CATALOG_DIVERGENCE, '/skills', `catalog skill "${id}" is missing from the card without an override binding`);
321
+ }
322
+ }
323
+ }
324
+ // ── security / privacy scan over every string (signatures excluded) ─────────────────────────────
325
+ walkStrings(stripSignatures(c), '', (value, pointer) => {
326
+ if (SECRET_PATTERNS.some((re) => re.test(value))) {
327
+ err(DIAGNOSTIC_CODES.SECRET_MATERIAL_DETECTED, pointer, 'string looks like key / token / secret material');
328
+ }
329
+ if (VAULT_REF_RE.test(value)) {
330
+ err(DIAGNOSTIC_CODES.VAULT_REFERENCE_DETECTED, pointer, 'vault reference in a public card', 'Vault records are private (ADR-0055); a card must never point into one.');
331
+ }
332
+ if (isProseField(pointer) && PII_PATTERNS.some((re) => re.test(value))) {
333
+ warn(DIAGNOSTIC_CODES.PII_SUSPECTED, pointer, 'possible personal data (email / phone / national id pattern) in descriptive text');
334
+ }
335
+ // URLs embedded in strings outside the explicitly checked URL fields (examples, descriptions, params).
336
+ if (!CHECKED_URL_POINTER.test(pointer)) {
337
+ for (const m of value.matchAll(EMBEDDED_URL_RE)) {
338
+ try {
339
+ if (isPrivateHost(new URL(m[0]).hostname))
340
+ warn(DIAGNOSTIC_CODES.PRIVATE_URL_DETECTED, pointer, `"${m[0]}" points at a private / loopback host`);
341
+ }
342
+ catch {
343
+ /* not a URL */
344
+ }
345
+ }
346
+ }
347
+ });
348
+ return out;
349
+ }
350
+ // ─── helpers ─────────────────────────────────────────────────────────────────────────────────────────
351
+ const KNOWN_BINDINGS = new Set(['JSONRPC', 'GRPC', 'HTTP+JSON']);
352
+ const MIME_RE = /^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+(?:\s*;.*)?$/i;
353
+ const EMBEDDED_URL_RE = /https?:\/\/[^\s"'<>)\]]+/gi;
354
+ const CHECKED_URL_POINTER = /^\/(supportedInterfaces\/\d+\/url|provider\/url|documentationUrl|iconUrl|securitySchemes\/[^/]+\/(openIdConnectUrl|oauth2MetadataUrl|flows\/.*Url))$/;
355
+ const SECRET_PATTERNS = [
356
+ /\b0x[0-9a-fA-F]{64}\b/, // 32-byte hex — a raw private key (or a digest; flagged either way in prose)
357
+ /-----BEGIN [A-Z ]*(PRIVATE KEY|CERTIFICATE)-----/,
358
+ /\bsk[-_](?:live|test|proj)?[-_]?[A-Za-z0-9]{8,}/, // vendor secret keys
359
+ /\bBearer\s+[A-Za-z0-9\-._~+/]{20,}=*/i,
360
+ /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/, // JWT
361
+ /\bAKIA[0-9A-Z]{16}\b/, // AWS access key id
362
+ /\bghp_[A-Za-z0-9]{20,}\b/,
363
+ ];
364
+ const VAULT_REF_RE = /\b(?:urn:ap:vault|vault:)[^\s"']*/i;
365
+ const PII_PATTERNS = [
366
+ /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/i, // email
367
+ /\b\d{3}-\d{2}-\d{4}\b/, // US SSN shape
368
+ /(?:\+|00)\d{1,3}[\s-]?\(?\d{2,4}\)?[\s-]?\d{3,4}[\s-]?\d{3,4}\b/, // international phone
369
+ ];
370
+ function isProseField(pointer) {
371
+ return /\/(description|examples\/\d+|name)$/.test(pointer);
372
+ }
373
+ function isAbsoluteUri(s) {
374
+ return /^[a-z][a-z0-9+.-]*:/i.test(s);
375
+ }
376
+ export function isPrivateHost(hostname) {
377
+ const h = hostname.toLowerCase().replace(/^\[|\]$/g, '');
378
+ if (h === 'localhost' || h.endsWith('.localhost') || h.endsWith('.local') || h.endsWith('.internal'))
379
+ return true;
380
+ if (h === '0.0.0.0' || h === '::1' || h === '::')
381
+ return true;
382
+ if (h === 'metadata.google.internal' || h === 'metadata')
383
+ return true;
384
+ const v4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(h);
385
+ if (v4) {
386
+ const [a, b] = [Number(v4[1]), Number(v4[2])];
387
+ if (a === 127 || a === 10 || a === 0)
388
+ return true;
389
+ if (a === 169 && b === 254)
390
+ return true; // link-local + cloud metadata (169.254.169.254)
391
+ if (a === 172 && b >= 16 && b <= 31)
392
+ return true;
393
+ if (a === 192 && b === 168)
394
+ return true;
395
+ if (a === 100 && b >= 64 && b <= 127)
396
+ return true; // CGNAT
397
+ return false;
398
+ }
399
+ if (h.includes(':')) {
400
+ if (/^fe[89ab]/.test(h))
401
+ return true; // link-local
402
+ if (/^f[cd]/.test(h))
403
+ return true; // unique-local
404
+ if (h.startsWith('::ffff:'))
405
+ return isPrivateHost(h.slice(7));
406
+ }
407
+ return false;
408
+ }
409
+ function stripSignatures(c) {
410
+ const { signatures: _s, ...rest } = c;
411
+ return rest;
412
+ }
413
+ function walkStrings(node, pointer, visit) {
414
+ if (typeof node === 'string')
415
+ return visit(node, pointer);
416
+ if (Array.isArray(node))
417
+ return node.forEach((v, i) => walkStrings(v, `${pointer}/${i}`, visit));
418
+ if (node && typeof node === 'object') {
419
+ for (const [k, v] of Object.entries(node))
420
+ walkStrings(v, `${pointer}${joinPointer(k)}`, visit);
421
+ }
422
+ }
423
+ function validateScheme(pointer, s, err, urlCheck) {
424
+ if (!s || typeof s !== 'object' || Array.isArray(s))
425
+ return void err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, pointer, 'scheme must be an object');
426
+ const o = s;
427
+ const t = o.type;
428
+ if (typeof t !== 'string' || !A2A_SECURITY_SCHEME_TYPES.includes(t)) {
429
+ return void err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/type`, `scheme type must be exactly one of ${A2A_SECURITY_SCHEME_TYPES.join(' | ')}`);
430
+ }
431
+ // Exactly ONE kind: members of another kind present ⇒ ambiguous ⇒ invalid.
432
+ const foreign = {
433
+ apiKey: ['scheme', 'bearerFormat', 'flows', 'oauth2MetadataUrl', 'openIdConnectUrl'],
434
+ http: ['name', 'in', 'flows', 'oauth2MetadataUrl', 'openIdConnectUrl'],
435
+ oauth2: ['name', 'in', 'scheme', 'bearerFormat', 'openIdConnectUrl'],
436
+ openIdConnect: ['name', 'in', 'scheme', 'bearerFormat', 'flows', 'oauth2MetadataUrl'],
437
+ mutualTLS: ['name', 'in', 'scheme', 'bearerFormat', 'flows', 'oauth2MetadataUrl', 'openIdConnectUrl'],
438
+ };
439
+ for (const k of foreign[t] ?? []) {
440
+ if (o[k] !== undefined)
441
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/${k}`, `"${k}" does not belong to a ${t} scheme (exactly one scheme kind per entry)`);
442
+ }
443
+ switch (t) {
444
+ case 'apiKey':
445
+ if (typeof o.name !== 'string' || !o.name)
446
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/name`, 'apiKey scheme requires name');
447
+ if (o.in !== 'header' && o.in !== 'query' && o.in !== 'cookie')
448
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/in`, 'apiKey scheme requires in ∈ header|query|cookie');
449
+ break;
450
+ case 'http':
451
+ if (typeof o.scheme !== 'string' || !o.scheme)
452
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/scheme`, 'http scheme requires scheme');
453
+ break;
454
+ case 'oauth2': {
455
+ const flows = o.flows;
456
+ if (!flows || typeof flows !== 'object' || Object.keys(flows).length === 0) {
457
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/flows`, 'oauth2 scheme requires ≥1 flow');
458
+ }
459
+ else {
460
+ for (const [fk, fv] of Object.entries(flows)) {
461
+ for (const uk of ['authorizationUrl', 'tokenUrl', 'refreshUrl'])
462
+ urlCheck(`${pointer}/flows/${fk}/${uk}`, fv?.[uk], false);
463
+ if (!fv?.scopes || typeof fv.scopes !== 'object')
464
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/flows/${fk}/scopes`, 'flow requires scopes');
465
+ }
466
+ }
467
+ urlCheck(`${pointer}/oauth2MetadataUrl`, o.oauth2MetadataUrl, false);
468
+ break;
469
+ }
470
+ case 'openIdConnect':
471
+ urlCheck(`${pointer}/openIdConnectUrl`, o.openIdConnectUrl, true);
472
+ break;
473
+ default:
474
+ break;
475
+ }
476
+ }
477
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/a2a/validation.ts"],"names":[],"mappings":"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"}
package/dist/calls.d.ts CHANGED
@@ -14,6 +14,7 @@
14
14
  * pure encode-only.
15
15
  */
16
16
  import type { Address, Hex } from '@agenticprimitives/types';
17
+ import type { AgentDistributionV1 } from './types.js';
17
18
  /** Minimal call-shape: the standard `{ to, value, data }` triple. */
18
19
  export interface ContractCall {
19
20
  to: Address;
@@ -51,6 +52,17 @@ export declare function buildSetProfileStringCall(args: {
51
52
  predicate: Hex;
52
53
  value: string;
53
54
  }): ContractCall;
55
+ /**
56
+ * Set the SA-keyed `atl:distribution` record (spec 347 §8.5) — the JCS-canonical JSON of an
57
+ * `AgentDistributionV1` via `setStringProperty`. Validates first and throws `InvalidProfileError` on an
58
+ * invalid distribution, so nothing unreadable reaches the chain. The walletClient's account MUST equal
59
+ * `agent` (the record is the agent's own declaration; a registry only projects it).
60
+ */
61
+ export declare function buildSetDistributionCall(args: {
62
+ profileResolver: Address;
63
+ agent: Address;
64
+ distribution: AgentDistributionV1;
65
+ }): ContractCall;
54
66
  /** Set a single address property on an agent's profile. */
55
67
  export declare function buildSetProfileAddressCall(args: {
56
68
  profileResolver: Address;
@@ -1 +1 @@
1
- {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../src/calls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAG7D,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;CACX;AAID;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,YAAY,CAgBf;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC;CACnB,GAAG,YAAY,CAUf;AAED,0DAA0D;AAC1D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,YAAY,CAUf;AAED,2DAA2D;AAC3D,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,YAAY,CAUf;AAED,2DAA2D;AAC3D,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;CACZ,GAAG,YAAY,CAUf;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,YAAY,CAUf"}
1
+ {"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../src/calls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;CACX;AAID;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,YAAY,CAgBf;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC;CACnB,GAAG,YAAY,CAUf;AAED,0DAA0D;AAC1D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,YAAY,CAUf;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,mBAAmB,CAAC;CACnC,GAAG,YAAY,CAOf;AAED,2DAA2D;AAC3D,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,YAAY,CAUf;AAED,2DAA2D;AAC3D,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;CACZ,GAAG,YAAY,CAUf;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,YAAY,CAUf"}
package/dist/calls.js CHANGED
@@ -15,6 +15,8 @@
15
15
  */
16
16
  import { encodeFunctionData } from 'viem';
17
17
  import { agentProfileResolverAbi } from './abis.js';
18
+ import { DISTRIBUTION } from './constants.js';
19
+ import { encodeDistribution } from './distribution.js';
18
20
  const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000000000000000000';
19
21
  /**
20
22
  * Build a call to register an agent's profile for the first time.
@@ -66,6 +68,20 @@ export function buildSetProfileStringCall(args) {
66
68
  }),
67
69
  };
68
70
  }
71
+ /**
72
+ * Set the SA-keyed `atl:distribution` record (spec 347 §8.5) — the JCS-canonical JSON of an
73
+ * `AgentDistributionV1` via `setStringProperty`. Validates first and throws `InvalidProfileError` on an
74
+ * invalid distribution, so nothing unreadable reaches the chain. The walletClient's account MUST equal
75
+ * `agent` (the record is the agent's own declaration; a registry only projects it).
76
+ */
77
+ export function buildSetDistributionCall(args) {
78
+ return buildSetProfileStringCall({
79
+ profileResolver: args.profileResolver,
80
+ agent: args.agent,
81
+ predicate: DISTRIBUTION,
82
+ value: encodeDistribution(args.distribution),
83
+ });
84
+ }
69
85
  /** Set a single address property on an agent's profile. */
70
86
  export function buildSetProfileAddressCall(args) {
71
87
  return {
package/dist/calls.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"calls.js","sourceRoot":"","sources":["../src/calls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AASpD,MAAM,YAAY,GAAG,oEAA2E,CAAC;AAEjG;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAOxC;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE;gBACJ,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,WAAW,IAAI,EAAE;gBACtB,IAAI,CAAC,WAAW,IAAI,EAAE;gBACtB,IAAI,CAAC,SAAS,IAAI,YAAY;gBAC9B,IAAI,CAAC,gBAAgB,IAAI,EAAE;aAC5B;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAK3C;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,aAAa;YAC3B,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC;SACxD,CAAC;KACH,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,yBAAyB,CAAC,IAKzC;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,mBAAmB;YACjC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;SAC/C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,0BAA0B,CAAC,IAK1C;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,oBAAoB;YAClC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;SAC/C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,0BAA0B,CAAC,IAK1C;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,oBAAoB;YAClC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;SAC/C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,yBAAyB,CAAC,IAIzC;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;SAChC,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"calls.js","sourceRoot":"","sources":["../src/calls.ts"],"names":[],"mappings":"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"}