@agenticprimitives/agent-profile 1.0.0-alpha.4 → 1.0.0-alpha.40

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 (93) hide show
  1. package/README.md +91 -37
  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 +327 -0
  39. package/dist/a2a/types.d.ts.map +1 -0
  40. package/dist/a2a/types.js +49 -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 +506 -0
  45. package/dist/a2a/validation.js.map +1 -0
  46. package/dist/caip10.d.ts +4 -3
  47. package/dist/caip10.d.ts.map +1 -1
  48. package/dist/caip10.js +8 -5
  49. package/dist/caip10.js.map +1 -1
  50. package/dist/calls.d.ts +23 -0
  51. package/dist/calls.d.ts.map +1 -1
  52. package/dist/calls.js +31 -1
  53. package/dist/calls.js.map +1 -1
  54. package/dist/card.d.ts +70 -0
  55. package/dist/card.d.ts.map +1 -0
  56. package/dist/card.js +130 -0
  57. package/dist/card.js.map +1 -0
  58. package/dist/client-key-binding.d.ts +196 -0
  59. package/dist/client-key-binding.d.ts.map +1 -0
  60. package/dist/client-key-binding.js +282 -0
  61. package/dist/client-key-binding.js.map +1 -0
  62. package/dist/client.d.ts +6 -4
  63. package/dist/client.d.ts.map +1 -1
  64. package/dist/client.js +79 -8
  65. package/dist/client.js.map +1 -1
  66. package/dist/constants.d.ts +31 -1
  67. package/dist/constants.d.ts.map +1 -1
  68. package/dist/constants.js +38 -1
  69. package/dist/constants.js.map +1 -1
  70. package/dist/derived-type.d.ts +14 -0
  71. package/dist/derived-type.d.ts.map +1 -0
  72. package/dist/derived-type.js +56 -0
  73. package/dist/derived-type.js.map +1 -0
  74. package/dist/distribution.d.ts +32 -0
  75. package/dist/distribution.d.ts.map +1 -0
  76. package/dist/distribution.js +167 -0
  77. package/dist/distribution.js.map +1 -0
  78. package/dist/errors.d.ts +6 -0
  79. package/dist/errors.d.ts.map +1 -1
  80. package/dist/errors.js +11 -0
  81. package/dist/errors.js.map +1 -1
  82. package/dist/index.d.ts +12 -8
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +19 -7
  85. package/dist/index.js.map +1 -1
  86. package/dist/profile.d.ts +4 -4
  87. package/dist/profile.d.ts.map +1 -1
  88. package/dist/profile.js +25 -3
  89. package/dist/profile.js.map +1 -1
  90. package/dist/types.d.ts +135 -9
  91. package/dist/types.d.ts.map +1 -1
  92. package/package.json +32 -12
  93. package/spec.md +5 -1
@@ -0,0 +1,81 @@
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 type { ProjectionDiagnosticV1 } from '@agenticprimitives/types';
17
+ import { type CardLike } from './canonical.js';
18
+ import { type A2AAgentCardV1, type A2AAgentInterfaceV1, type CardEnvironment, type FieldBindingV1 } from './types.js';
19
+ /** Stable diagnostic codes. Each is emitted by exactly one check; consumers key on these, not messages. */
20
+ export declare const DIAGNOSTIC_CODES: {
21
+ readonly STRUCT_MISSING_FIELD: "STRUCT_MISSING_FIELD";
22
+ readonly STRUCT_INVALID_TYPE: "STRUCT_INVALID_TYPE";
23
+ readonly PROTOCOL_VERSION_MISMATCH: "PROTOCOL_VERSION_MISMATCH";
24
+ readonly URL_NOT_ABSOLUTE: "URL_NOT_ABSOLUTE";
25
+ readonly URL_NOT_HTTPS: "URL_NOT_HTTPS";
26
+ readonly MIME_TYPE_INVALID: "MIME_TYPE_INVALID";
27
+ readonly SKILL_ID_DUPLICATE: "SKILL_ID_DUPLICATE";
28
+ readonly SECURITY_SCHEME_INVALID: "SECURITY_SCHEME_INVALID";
29
+ readonly SECURITY_REF_UNRESOLVED: "SECURITY_REF_UNRESOLVED";
30
+ readonly EXTENSION_URI_INVALID: "EXTENSION_URI_INVALID";
31
+ readonly CANONICALIZATION_FAILED: "CANONICALIZATION_FAILED";
32
+ readonly JCS_NOT_REPRODUCIBLE: "JCS_NOT_REPRODUCIBLE";
33
+ readonly NO_INTERFACE: "NO_INTERFACE";
34
+ readonly INTERFACE_BINDING_UNKNOWN: "INTERFACE_BINDING_UNKNOWN";
35
+ readonly EXTENDED_CARD_WITHOUT_POLICY: "EXTENDED_CARD_WITHOUT_POLICY";
36
+ readonly CAPABILITY_UNVERIFIED: "CAPABILITY_UNVERIFIED";
37
+ readonly VERSION_EQUALS_PROTOCOL_VERSION: "VERSION_EQUALS_PROTOCOL_VERSION";
38
+ readonly PROVIDER_MISSING: "PROVIDER_MISSING";
39
+ readonly CATALOG_DIVERGENCE: "CATALOG_DIVERGENCE";
40
+ readonly SECRET_MATERIAL_DETECTED: "SECRET_MATERIAL_DETECTED";
41
+ readonly PRIVATE_URL_DETECTED: "PRIVATE_URL_DETECTED";
42
+ readonly VAULT_REFERENCE_DETECTED: "VAULT_REFERENCE_DETECTED";
43
+ readonly PII_SUSPECTED: "PII_SUSPECTED";
44
+ readonly UNKNOWN_FIELD: "UNKNOWN_FIELD";
45
+ readonly SIGNATURE_INVALID: "SIGNATURE_INVALID";
46
+ readonly SIGNATURE_UNVERIFIED: "SIGNATURE_UNVERIFIED";
47
+ readonly SOURCE_NOT_JSON: "SOURCE_NOT_JSON";
48
+ };
49
+ export type DiagnosticCode = (typeof DIAGNOSTIC_CODES)[keyof typeof DIAGNOSTIC_CODES];
50
+ /** Structural view of `surface-catalog`'s `A2aCardSkillLike` — no package dependency (spec 347 §10.2 note). */
51
+ export interface CatalogSkillLike {
52
+ id: string;
53
+ name?: string;
54
+ description?: string;
55
+ }
56
+ /** Runtime-declared capabilities — evidence for `capabilities.*` claims. */
57
+ export interface RuntimeCapabilityEvidence {
58
+ streaming?: boolean;
59
+ pushNotifications?: boolean;
60
+ stateTransitionHistory?: boolean;
61
+ extendedAgentCard?: boolean;
62
+ }
63
+ export interface ValidateA2ACardOptions {
64
+ /** Pinned A2A version the card MUST declare. Default `'1.0'`. */
65
+ protocolVersion?: string;
66
+ environment: CardEnvironment;
67
+ /** Interfaces the surface catalog / deployment says are served. Disagreement without an override ⇒ error. */
68
+ surfaceInterfaces?: Pick<A2AAgentInterfaceV1, 'url' | 'protocolBinding'>[];
69
+ /** What the runtime actually implements. Absent ⇒ `pushNotifications:true` is unverifiable. */
70
+ runtimeCapabilities?: RuntimeCapabilityEvidence;
71
+ /** Skills the surface catalog serves (`toCardProjectionSet(...).public`). */
72
+ catalogSkills?: CatalogSkillLike[];
73
+ fieldBindings?: Record<string, FieldBindingV1>;
74
+ /** Whether ≥1 extended-card policy is configured (needed for `capabilities.extendedAgentCard`). */
75
+ extendedCardPolicyConfigured?: boolean;
76
+ }
77
+ export declare function hasErrors(diagnostics: readonly ProjectionDiagnosticV1[]): boolean;
78
+ /** Validate a card. Returns diagnostics; never throws on card content. */
79
+ export declare function validateA2ACard(card: A2AAgentCardV1 | CardLike, opts: ValidateA2ACardOptions): ProjectionDiagnosticV1[];
80
+ export declare function isPrivateHost(hostname: string): boolean;
81
+ //# sourceMappingURL=validation.d.ts.map
@@ -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,EAGL,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,CAgSvH;AAsCD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAqBvD"}
@@ -0,0 +1,506 @@
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_PROTO_SECURITY_SCHEME_KEYS, 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
+ // PROTO-JSON: `{ schemes: { <name>: { list: [scope…] } } }`, because proto has no map-to-array and no bare
233
+ // repeated field inside a map value. The names and scopes mean the same thing; only the shape differs, so
234
+ // both are read here and neither is rewritten.
235
+ const outer = r;
236
+ const proto = outer.schemes;
237
+ const entries = proto && typeof proto === 'object' && !Array.isArray(proto)
238
+ ? Object.entries(proto).map(([name, v]) => [name, v?.list])
239
+ : Object.entries(outer);
240
+ const base = proto && typeof proto === 'object' && !Array.isArray(proto) ? [i, 'schemes'] : [i];
241
+ for (const [name, scopes] of entries) {
242
+ const p = joinPointer(...pointer.split('/').filter(Boolean), ...base, name);
243
+ if (!schemeNames.has(name))
244
+ err(DIAGNOSTIC_CODES.SECURITY_REF_UNRESOLVED, p, `security requirement "${name}" names no declared scheme`);
245
+ if (!Array.isArray(scopes) || scopes.some((x) => typeof x !== 'string'))
246
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, p, 'scopes must be an array of strings');
247
+ }
248
+ });
249
+ };
250
+ reqCheck('/securityRequirements', c.securityRequirements);
251
+ // skills
252
+ const skills = c.skills;
253
+ if (skills === undefined)
254
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, '/skills', '"skills" is required');
255
+ else if (!Array.isArray(skills))
256
+ err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, '/skills', '"skills" must be an array');
257
+ else {
258
+ const seen = new Set();
259
+ skills.forEach((s, i) => {
260
+ const p = joinPointer('skills', i);
261
+ if (!s || typeof s !== 'object')
262
+ return void err(DIAGNOSTIC_CODES.STRUCT_INVALID_TYPE, p, 'skill must be an object');
263
+ const sk = s;
264
+ for (const k of ['id', 'name', 'description']) {
265
+ if (typeof sk[k] !== 'string' || sk[k].length === 0)
266
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, `${p}/${k}`, `skill.${k} is required`);
267
+ }
268
+ if (!Array.isArray(sk.tags) || sk.tags.some((t) => typeof t !== 'string'))
269
+ err(DIAGNOSTIC_CODES.STRUCT_MISSING_FIELD, `${p}/tags`, 'skill.tags must be an array of strings');
270
+ if (typeof sk.id === 'string') {
271
+ if (seen.has(sk.id))
272
+ err(DIAGNOSTIC_CODES.SKILL_ID_DUPLICATE, `${p}/id`, `duplicate skill id "${sk.id}"`);
273
+ seen.add(sk.id);
274
+ }
275
+ for (const k of ['inputModes', 'outputModes']) {
276
+ sk[k]?.forEach((m, j) => {
277
+ if (typeof m !== 'string' || !MIME_RE.test(m))
278
+ err(DIAGNOSTIC_CODES.MIME_TYPE_INVALID, joinPointer('skills', i, k, j), `"${String(m)}" is not a MIME type`);
279
+ });
280
+ }
281
+ reqCheck(`${p}/securityRequirements`, sk.securityRequirements);
282
+ });
283
+ }
284
+ // ── serialization ───────────────────────────────────────────────────────────────────────────────
285
+ try {
286
+ const a = canonicalCardJson(card);
287
+ const b = canonicalCardJson(JSON.parse(a));
288
+ if (a !== b)
289
+ err(DIAGNOSTIC_CODES.JCS_NOT_REPRODUCIBLE, '', 'JCS canonicalization is not reproducible for this card');
290
+ }
291
+ catch (e) {
292
+ err(DIAGNOSTIC_CODES.CANONICALIZATION_FAILED, '', `card cannot be canonicalized: ${e.message}`);
293
+ }
294
+ // ── semantic: catalog agreement (spec 347 §13(b)) ───────────────────────────────────────────────
295
+ const bindingAt = (pointer) => opts.fieldBindings?.[pointer];
296
+ const isOverridden = (pointer, parent) => bindingAt(pointer)?.mode === 'override' || bindingAt(parent)?.mode === 'override';
297
+ if (opts.surfaceInterfaces && Array.isArray(ifaces)) {
298
+ const key = (i) => `${i.protocolBinding}${i.url}`;
299
+ const catalog = new Set(opts.surfaceInterfaces.map(key));
300
+ const onCard = new Set(ifaces.filter((i) => i && typeof i === 'object').map(key));
301
+ ifaces.forEach((i, idx) => {
302
+ if (i && typeof i === 'object' && !catalog.has(key(i)) && !isOverridden(joinPointer('supportedInterfaces', idx), '/supportedInterfaces')) {
303
+ 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).');
304
+ }
305
+ });
306
+ for (const s of opts.surfaceInterfaces) {
307
+ if (!onCard.has(key(s)) && !isOverridden('/supportedInterfaces', '/supportedInterfaces')) {
308
+ err(DIAGNOSTIC_CODES.CATALOG_DIVERGENCE, '/supportedInterfaces', `catalog interface ${s.protocolBinding} ${s.url} is missing from the card without an override binding`);
309
+ }
310
+ }
311
+ }
312
+ if (opts.catalogSkills && Array.isArray(skills)) {
313
+ const catalogIds = new Set(opts.catalogSkills.map((s) => s.id));
314
+ const cardIds = new Set();
315
+ skills.forEach((s, idx) => {
316
+ if (!s || typeof s.id !== 'string')
317
+ return;
318
+ cardIds.add(s.id);
319
+ if (catalogIds.has(s.id))
320
+ return;
321
+ const b = bindingAt(joinPointer('skills', idx)) ?? bindingAt('/skills');
322
+ const legit = b?.mode === 'override' || b?.source.kind === 'capability-claims';
323
+ if (!legit) {
324
+ 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).');
325
+ }
326
+ });
327
+ for (const id of catalogIds) {
328
+ if (!cardIds.has(id) && bindingAt('/skills')?.mode !== 'override') {
329
+ err(DIAGNOSTIC_CODES.CATALOG_DIVERGENCE, '/skills', `catalog skill "${id}" is missing from the card without an override binding`);
330
+ }
331
+ }
332
+ }
333
+ // ── security / privacy scan over every string (signatures excluded) ─────────────────────────────
334
+ walkStrings(stripSignatures(c), '', (value, pointer) => {
335
+ if (SECRET_PATTERNS.some((re) => re.test(value))) {
336
+ err(DIAGNOSTIC_CODES.SECRET_MATERIAL_DETECTED, pointer, 'string looks like key / token / secret material');
337
+ }
338
+ if (VAULT_REF_RE.test(value)) {
339
+ 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.');
340
+ }
341
+ if (isProseField(pointer) && PII_PATTERNS.some((re) => re.test(value))) {
342
+ warn(DIAGNOSTIC_CODES.PII_SUSPECTED, pointer, 'possible personal data (email / phone / national id pattern) in descriptive text');
343
+ }
344
+ // URLs embedded in strings outside the explicitly checked URL fields (examples, descriptions, params).
345
+ if (!CHECKED_URL_POINTER.test(pointer)) {
346
+ for (const m of value.matchAll(EMBEDDED_URL_RE)) {
347
+ try {
348
+ if (isPrivateHost(new URL(m[0]).hostname))
349
+ warn(DIAGNOSTIC_CODES.PRIVATE_URL_DETECTED, pointer, `"${m[0]}" points at a private / loopback host`);
350
+ }
351
+ catch {
352
+ /* not a URL */
353
+ }
354
+ }
355
+ }
356
+ });
357
+ return out;
358
+ }
359
+ // ─── helpers ─────────────────────────────────────────────────────────────────────────────────────────
360
+ const KNOWN_BINDINGS = new Set(['JSONRPC', 'GRPC', 'HTTP+JSON']);
361
+ const MIME_RE = /^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+(?:\s*;.*)?$/i;
362
+ const EMBEDDED_URL_RE = /https?:\/\/[^\s"'<>)\]]+/gi;
363
+ const CHECKED_URL_POINTER = /^\/(supportedInterfaces\/\d+\/url|provider\/url|documentationUrl|iconUrl|securitySchemes\/[^/]+\/(openIdConnectUrl|oauth2MetadataUrl|flows\/.*Url))$/;
364
+ const SECRET_PATTERNS = [
365
+ /\b0x[0-9a-fA-F]{64}\b/, // 32-byte hex — a raw private key (or a digest; flagged either way in prose)
366
+ /-----BEGIN [A-Z ]*(PRIVATE KEY|CERTIFICATE)-----/,
367
+ /\bsk[-_](?:live|test|proj)?[-_]?[A-Za-z0-9]{8,}/, // vendor secret keys
368
+ /\bBearer\s+[A-Za-z0-9\-._~+/]{20,}=*/i,
369
+ /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/, // JWT
370
+ /\bAKIA[0-9A-Z]{16}\b/, // AWS access key id
371
+ /\bghp_[A-Za-z0-9]{20,}\b/,
372
+ ];
373
+ // A REFERENCE, not the English word. The tail was `[^\s"']*` — zero or more — so a bare `vault:` matched, and the
374
+ // sentence "a Bible knowledge-graph vault: resolves passages…" was reported as a vault reference in a public card
375
+ // (found 2026-10-14 on a passage-resolving service card, where it read as a disclosure and was prose). A reference has a
376
+ // path after the colon; requiring one still catches `vault:records/abc` and `urn:ap:vault:person/pii`, and stops
377
+ // a validator from crying wolf — which is how a card validator gets ignored.
378
+ const VAULT_REF_RE = /\b(?:urn:ap:vault:|vault:)[A-Za-z0-9._*-]+(?:[/:][A-Za-z0-9._*-]+)*/i;
379
+ const PII_PATTERNS = [
380
+ /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/i, // email
381
+ /\b\d{3}-\d{2}-\d{4}\b/, // US SSN shape
382
+ /(?:\+|00)\d{1,3}[\s-]?\(?\d{2,4}\)?[\s-]?\d{3,4}[\s-]?\d{3,4}\b/, // international phone
383
+ ];
384
+ function isProseField(pointer) {
385
+ return /\/(description|examples\/\d+|name)$/.test(pointer);
386
+ }
387
+ function isAbsoluteUri(s) {
388
+ return /^[a-z][a-z0-9+.-]*:/i.test(s);
389
+ }
390
+ export function isPrivateHost(hostname) {
391
+ const h = hostname.toLowerCase().replace(/^\[|\]$/g, '');
392
+ if (h === 'localhost' || h.endsWith('.localhost') || h.endsWith('.local') || h.endsWith('.internal'))
393
+ return true;
394
+ if (h === '0.0.0.0' || h === '::1' || h === '::')
395
+ return true;
396
+ if (h === 'metadata.google.internal' || h === 'metadata')
397
+ return true;
398
+ const v4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(h);
399
+ if (v4) {
400
+ const [a, b] = [Number(v4[1]), Number(v4[2])];
401
+ if (a === 127 || a === 10 || a === 0)
402
+ return true;
403
+ if (a === 169 && b === 254)
404
+ return true; // link-local + cloud metadata (169.254.169.254)
405
+ if (a === 172 && b >= 16 && b <= 31)
406
+ return true;
407
+ if (a === 192 && b === 168)
408
+ return true;
409
+ if (a === 100 && b >= 64 && b <= 127)
410
+ return true; // CGNAT
411
+ return false;
412
+ }
413
+ if (h.includes(':')) {
414
+ if (/^fe[89ab]/.test(h))
415
+ return true; // link-local
416
+ if (/^f[cd]/.test(h))
417
+ return true; // unique-local
418
+ if (h.startsWith('::ffff:'))
419
+ return isPrivateHost(h.slice(7));
420
+ }
421
+ return false;
422
+ }
423
+ function stripSignatures(c) {
424
+ const { signatures: _s, ...rest } = c;
425
+ return rest;
426
+ }
427
+ function walkStrings(node, pointer, visit) {
428
+ if (typeof node === 'string')
429
+ return visit(node, pointer);
430
+ if (Array.isArray(node))
431
+ return node.forEach((v, i) => walkStrings(v, `${pointer}/${i}`, visit));
432
+ if (node && typeof node === 'object') {
433
+ for (const [k, v] of Object.entries(node))
434
+ walkStrings(v, `${pointer}${joinPointer(k)}`, visit);
435
+ }
436
+ }
437
+ function validateScheme(pointer, s, err, urlCheck) {
438
+ if (!s || typeof s !== 'object' || Array.isArray(s))
439
+ return void err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, pointer, 'scheme must be an object');
440
+ const o = s;
441
+ // A2A 1.0's PROTO-JSON form: the `oneof` as a wrapper object, which is what the official TCK validates and what
442
+ // this substrate's own wire emits. Exactly one wrapper key, and nothing else alongside it — a second key is the
443
+ // same ambiguity the `type` form's foreign-member check refuses.
444
+ const wrappers = A2A_PROTO_SECURITY_SCHEME_KEYS.filter((k) => o[k] !== undefined);
445
+ if (wrappers.length > 0) {
446
+ if (wrappers.length > 1)
447
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, pointer, `exactly one scheme kind per entry; found ${wrappers.join(' + ')}`);
448
+ const extra = Object.keys(o).filter((k) => !A2A_PROTO_SECURITY_SCHEME_KEYS.includes(k));
449
+ if (extra.length > 0)
450
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, pointer, `a proto-JSON scheme carries only its wrapper key; found also ${extra.join(', ')}`);
451
+ const inner = o[wrappers[0]];
452
+ if (!inner || typeof inner !== 'object' || Array.isArray(inner))
453
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/${wrappers[0]}`, 'the wrapper must hold an object');
454
+ return;
455
+ }
456
+ const t = o.type;
457
+ if (typeof t !== 'string' || !A2A_SECURITY_SCHEME_TYPES.includes(t)) {
458
+ return void err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/type`, `scheme type must be exactly one of ${A2A_SECURITY_SCHEME_TYPES.join(' | ')}`);
459
+ }
460
+ // Exactly ONE kind: members of another kind present ⇒ ambiguous ⇒ invalid.
461
+ const foreign = {
462
+ apiKey: ['scheme', 'bearerFormat', 'flows', 'oauth2MetadataUrl', 'openIdConnectUrl'],
463
+ http: ['name', 'in', 'flows', 'oauth2MetadataUrl', 'openIdConnectUrl'],
464
+ oauth2: ['name', 'in', 'scheme', 'bearerFormat', 'openIdConnectUrl'],
465
+ openIdConnect: ['name', 'in', 'scheme', 'bearerFormat', 'flows', 'oauth2MetadataUrl'],
466
+ mutualTLS: ['name', 'in', 'scheme', 'bearerFormat', 'flows', 'oauth2MetadataUrl', 'openIdConnectUrl'],
467
+ };
468
+ for (const k of foreign[t] ?? []) {
469
+ if (o[k] !== undefined)
470
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/${k}`, `"${k}" does not belong to a ${t} scheme (exactly one scheme kind per entry)`);
471
+ }
472
+ switch (t) {
473
+ case 'apiKey':
474
+ if (typeof o.name !== 'string' || !o.name)
475
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/name`, 'apiKey scheme requires name');
476
+ if (o.in !== 'header' && o.in !== 'query' && o.in !== 'cookie')
477
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/in`, 'apiKey scheme requires in ∈ header|query|cookie');
478
+ break;
479
+ case 'http':
480
+ if (typeof o.scheme !== 'string' || !o.scheme)
481
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/scheme`, 'http scheme requires scheme');
482
+ break;
483
+ case 'oauth2': {
484
+ const flows = o.flows;
485
+ if (!flows || typeof flows !== 'object' || Object.keys(flows).length === 0) {
486
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/flows`, 'oauth2 scheme requires ≥1 flow');
487
+ }
488
+ else {
489
+ for (const [fk, fv] of Object.entries(flows)) {
490
+ for (const uk of ['authorizationUrl', 'tokenUrl', 'refreshUrl'])
491
+ urlCheck(`${pointer}/flows/${fk}/${uk}`, fv?.[uk], false);
492
+ if (!fv?.scopes || typeof fv.scopes !== 'object')
493
+ err(DIAGNOSTIC_CODES.SECURITY_SCHEME_INVALID, `${pointer}/flows/${fk}/scopes`, 'flow requires scopes');
494
+ }
495
+ }
496
+ urlCheck(`${pointer}/oauth2MetadataUrl`, o.oauth2MetadataUrl, false);
497
+ break;
498
+ }
499
+ case 'openIdConnect':
500
+ urlCheck(`${pointer}/openIdConnectUrl`, o.openIdConnectUrl, true);
501
+ break;
502
+ default:
503
+ break;
504
+ }
505
+ }
506
+ //# 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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"}