agent-passport-system 4.1.1 → 4.2.0

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 (121) hide show
  1. package/dist/src/adapters/oauth-id-jag/import-v1.d.ts +74 -0
  2. package/dist/src/adapters/oauth-id-jag/import-v1.d.ts.map +1 -0
  3. package/dist/src/adapters/oauth-id-jag/import-v1.js +243 -0
  4. package/dist/src/adapters/oauth-id-jag/import-v1.js.map +1 -0
  5. package/dist/src/index.d.ts +3 -0
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +6 -0
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/profiles/a2a/identity-v1.d.ts +44 -0
  10. package/dist/src/profiles/a2a/identity-v1.d.ts.map +1 -0
  11. package/dist/src/profiles/a2a/identity-v1.js +208 -0
  12. package/dist/src/profiles/a2a/identity-v1.js.map +1 -0
  13. package/dist/src/profiles/a2a/index.d.ts +2 -0
  14. package/dist/src/profiles/a2a/index.d.ts.map +1 -0
  15. package/dist/src/profiles/a2a/index.js +2 -0
  16. package/dist/src/profiles/a2a/index.js.map +1 -0
  17. package/dist/src/profiles/mcp/authorization-v1.d.ts +88 -0
  18. package/dist/src/profiles/mcp/authorization-v1.d.ts.map +1 -0
  19. package/dist/src/profiles/mcp/authorization-v1.js +215 -0
  20. package/dist/src/profiles/mcp/authorization-v1.js.map +1 -0
  21. package/dist/src/profiles/mcp/index.d.ts +2 -0
  22. package/dist/src/profiles/mcp/index.d.ts.map +1 -0
  23. package/dist/src/profiles/mcp/index.js +2 -0
  24. package/dist/src/profiles/mcp/index.js.map +1 -0
  25. package/dist/src/v2/action-reference/index.d.ts +2 -0
  26. package/dist/src/v2/action-reference/index.d.ts.map +1 -0
  27. package/dist/src/v2/action-reference/index.js +2 -0
  28. package/dist/src/v2/action-reference/index.js.map +1 -0
  29. package/dist/src/v2/action-reference/v2.d.ts +23 -0
  30. package/dist/src/v2/action-reference/v2.d.ts.map +1 -0
  31. package/dist/src/v2/action-reference/v2.js +57 -0
  32. package/dist/src/v2/action-reference/v2.js.map +1 -0
  33. package/dist/src/v2/authority-delegation/budget.d.ts +20 -0
  34. package/dist/src/v2/authority-delegation/budget.d.ts.map +1 -0
  35. package/dist/src/v2/authority-delegation/budget.js +141 -0
  36. package/dist/src/v2/authority-delegation/budget.js.map +1 -0
  37. package/dist/src/v2/authority-delegation/canonical.d.ts +12 -0
  38. package/dist/src/v2/authority-delegation/canonical.d.ts.map +1 -0
  39. package/dist/src/v2/authority-delegation/canonical.js +33 -0
  40. package/dist/src/v2/authority-delegation/canonical.js.map +1 -0
  41. package/dist/src/v2/authority-delegation/compare.d.ts +4 -0
  42. package/dist/src/v2/authority-delegation/compare.d.ts.map +1 -0
  43. package/dist/src/v2/authority-delegation/compare.js +67 -0
  44. package/dist/src/v2/authority-delegation/compare.js.map +1 -0
  45. package/dist/src/v2/authority-delegation/index.d.ts +10 -0
  46. package/dist/src/v2/authority-delegation/index.d.ts.map +1 -0
  47. package/dist/src/v2/authority-delegation/index.js +12 -0
  48. package/dist/src/v2/authority-delegation/index.js.map +1 -0
  49. package/dist/src/v2/authority-delegation/issue.d.ts +10 -0
  50. package/dist/src/v2/authority-delegation/issue.d.ts.map +1 -0
  51. package/dist/src/v2/authority-delegation/issue.js +52 -0
  52. package/dist/src/v2/authority-delegation/issue.js.map +1 -0
  53. package/dist/src/v2/authority-delegation/parse.d.ts +4 -0
  54. package/dist/src/v2/authority-delegation/parse.d.ts.map +1 -0
  55. package/dist/src/v2/authority-delegation/parse.js +96 -0
  56. package/dist/src/v2/authority-delegation/parse.js.map +1 -0
  57. package/dist/src/v2/authority-delegation/schema.d.ts +7 -0
  58. package/dist/src/v2/authority-delegation/schema.d.ts.map +1 -0
  59. package/dist/src/v2/authority-delegation/schema.js +177 -0
  60. package/dist/src/v2/authority-delegation/schema.js.map +1 -0
  61. package/dist/src/v2/authority-delegation/scope.d.ts +6 -0
  62. package/dist/src/v2/authority-delegation/scope.d.ts.map +1 -0
  63. package/dist/src/v2/authority-delegation/scope.js +50 -0
  64. package/dist/src/v2/authority-delegation/scope.js.map +1 -0
  65. package/dist/src/v2/authority-delegation/types.d.ts +98 -0
  66. package/dist/src/v2/authority-delegation/types.d.ts.map +1 -0
  67. package/dist/src/v2/authority-delegation/types.js +10 -0
  68. package/dist/src/v2/authority-delegation/types.js.map +1 -0
  69. package/dist/src/v2/authority-delegation/verify.d.ts +5 -0
  70. package/dist/src/v2/authority-delegation/verify.d.ts.map +1 -0
  71. package/dist/src/v2/authority-delegation/verify.js +124 -0
  72. package/dist/src/v2/authority-delegation/verify.js.map +1 -0
  73. package/dist/src/v2/identity-binding/did-aps.d.ts +12 -0
  74. package/dist/src/v2/identity-binding/did-aps.d.ts.map +1 -0
  75. package/dist/src/v2/identity-binding/did-aps.js +53 -0
  76. package/dist/src/v2/identity-binding/did-aps.js.map +1 -0
  77. package/dist/src/v2/identity-binding/index.d.ts +6 -0
  78. package/dist/src/v2/identity-binding/index.d.ts.map +1 -0
  79. package/dist/src/v2/identity-binding/index.js +6 -0
  80. package/dist/src/v2/identity-binding/index.js.map +1 -0
  81. package/dist/src/v2/identity-binding/passport.d.ts +18 -0
  82. package/dist/src/v2/identity-binding/passport.d.ts.map +1 -0
  83. package/dist/src/v2/identity-binding/passport.js +144 -0
  84. package/dist/src/v2/identity-binding/passport.js.map +1 -0
  85. package/dist/src/v2/identity-binding/principal-binding.d.ts +20 -0
  86. package/dist/src/v2/identity-binding/principal-binding.d.ts.map +1 -0
  87. package/dist/src/v2/identity-binding/principal-binding.js +128 -0
  88. package/dist/src/v2/identity-binding/principal-binding.js.map +1 -0
  89. package/dist/src/v2/identity-binding/revocation.d.ts +12 -0
  90. package/dist/src/v2/identity-binding/revocation.d.ts.map +1 -0
  91. package/dist/src/v2/identity-binding/revocation.js +97 -0
  92. package/dist/src/v2/identity-binding/revocation.js.map +1 -0
  93. package/dist/src/v2/identity-binding/types.d.ts +72 -0
  94. package/dist/src/v2/identity-binding/types.d.ts.map +1 -0
  95. package/dist/src/v2/identity-binding/types.js +4 -0
  96. package/dist/src/v2/identity-binding/types.js.map +1 -0
  97. package/dist/src/v2/identity-binding/validation.d.ts +9 -0
  98. package/dist/src/v2/identity-binding/validation.d.ts.map +1 -0
  99. package/dist/src/v2/identity-binding/validation.js +104 -0
  100. package/dist/src/v2/identity-binding/validation.js.map +1 -0
  101. package/dist/src/v2/receipt-core/decision-ref.d.ts +23 -0
  102. package/dist/src/v2/receipt-core/decision-ref.d.ts.map +1 -0
  103. package/dist/src/v2/receipt-core/decision-ref.js +75 -0
  104. package/dist/src/v2/receipt-core/decision-ref.js.map +1 -0
  105. package/dist/src/v2/receipt-core/jcs.d.ts +15 -0
  106. package/dist/src/v2/receipt-core/jcs.d.ts.map +1 -0
  107. package/dist/src/v2/receipt-core/jcs.js +198 -0
  108. package/dist/src/v2/receipt-core/jcs.js.map +1 -0
  109. package/dist/src/v2/receipt-core/receipt.d.ts +21 -0
  110. package/dist/src/v2/receipt-core/receipt.d.ts.map +1 -0
  111. package/dist/src/v2/receipt-core/receipt.js +132 -0
  112. package/dist/src/v2/receipt-core/receipt.js.map +1 -0
  113. package/dist/src/v2/receipt-core/supporting-record.d.ts +55 -0
  114. package/dist/src/v2/receipt-core/supporting-record.d.ts.map +1 -0
  115. package/dist/src/v2/receipt-core/supporting-record.js +243 -0
  116. package/dist/src/v2/receipt-core/supporting-record.js.map +1 -0
  117. package/dist/src/v2/receipt-core/types.d.ts +94 -0
  118. package/dist/src/v2/receipt-core/types.d.ts.map +1 -0
  119. package/dist/src/v2/receipt-core/types.js +4 -0
  120. package/dist/src/v2/receipt-core/types.js.map +1 -0
  121. package/package.json +5 -5
@@ -0,0 +1,44 @@
1
+ import type { HistoricalKeyResolver } from '../../v2/identity-binding/types.js';
2
+ export declare const APS_A2A_IDENTITY_EXTENSION = "https://agent-passport.org/a2a/extensions/identity/v1";
3
+ export interface A2AApsIdentityParamsV1 {
4
+ agent_id: string;
5
+ passport_uri: string;
6
+ passport_sha256: string;
7
+ principal_binding_uri?: string;
8
+ principal_binding_sha256?: string;
9
+ issued_at: string;
10
+ expires_at: string;
11
+ }
12
+ export interface A2AAgentCardSignature {
13
+ protected: string;
14
+ signature: string;
15
+ header?: Record<string, unknown>;
16
+ }
17
+ export type A2AAgentCardObject = Record<string, unknown> & {
18
+ capabilities: Record<string, unknown> & {
19
+ extensions?: unknown[];
20
+ };
21
+ signatures?: A2AAgentCardSignature[];
22
+ };
23
+ export interface A2AApsIdentityVerification {
24
+ state: 'valid' | 'invalid' | 'indeterminate' | 'unsupported';
25
+ code: string;
26
+ agent_id?: string;
27
+ card_signature: 'verified' | 'rejected' | 'unresolved';
28
+ passport: 'resolved' | 'mismatch' | 'unresolved';
29
+ principal_binding: 'resolved' | 'mismatch' | 'unresolved' | 'absent';
30
+ }
31
+ export declare function attachApsIdentityExtensionV1(card: A2AAgentCardObject, params: A2AApsIdentityParamsV1, required?: boolean): A2AAgentCardObject;
32
+ export declare function signA2AAgentCardV1(card: A2AAgentCardObject, privateKeyHex: string, kid: string): A2AAgentCardObject;
33
+ export declare function verifyApsA2AAgentCardV1(candidate: unknown, options: {
34
+ resolve_key: HistoricalKeyResolver;
35
+ resolve_artifact?: (uri: string) => Uint8Array | Promise<Uint8Array>;
36
+ now?: string;
37
+ }): Promise<A2AApsIdentityVerification>;
38
+ /** Legacy custom fields do not carry the A2A JWS payload and cannot verify. */
39
+ export declare function assessLegacyAgentPassportExtension(_candidate: unknown): {
40
+ state: 'legacy_unverifiable';
41
+ code: 'A2A_LEGACY_EXTENSION_UNSIGNED_PROJECTION';
42
+ };
43
+ export declare function getApsIdentityParamsV1(card: A2AAgentCardObject): A2AApsIdentityParamsV1;
44
+ //# sourceMappingURL=identity-v1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-v1.d.ts","sourceRoot":"","sources":["../../../../src/profiles/a2a/identity-v1.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAS/E,eAAO,MAAM,0BAA0B,0DAA0D,CAAA;AAEjG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACzD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAA;IAClE,UAAU,CAAC,EAAE,qBAAqB,EAAE,CAAA;CACrC,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,CAAA;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAA;IACtD,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAA;IAChD,iBAAiB,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAA;CACrE;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,UAAQ,GACf,kBAAkB,CAqBpB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,kBAAkB,EACxB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,kBAAkB,CAcpB;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE;IACP,WAAW,EAAE,qBAAqB,CAAA;IAClC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACpE,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GACA,OAAO,CAAC,0BAA0B,CAAC,CA6FrC;AAED,+EAA+E;AAC/E,wBAAgB,kCAAkC,CAAC,UAAU,EAAE,OAAO,GAAG;IACvE,KAAK,EAAE,qBAAqB,CAAA;IAC5B,IAAI,EAAE,0CAA0C,CAAA;CACjD,CAEA;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,GAAG,sBAAsB,CAQvF"}
@@ -0,0 +1,208 @@
1
+ // Copyright (c) 2026 Tymofii Pidlisnyi
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { createHash } from 'node:crypto';
4
+ import { canonicalizeJCS } from '../../core/canonical-jcs.js';
5
+ import { sign, verify } from '../../crypto/keys.js';
6
+ import { assertExactKeys, assertHex, assertIJson, assertPlainRecord, assertUtcMilliseconds, } from '../../v2/identity-binding/validation.js';
7
+ export const APS_A2A_IDENTITY_EXTENSION = 'https://agent-passport.org/a2a/extensions/identity/v1';
8
+ export function attachApsIdentityExtensionV1(card, params, required = false) {
9
+ validateParams(params);
10
+ const existing = Array.isArray(card.capabilities.extensions)
11
+ ? card.capabilities.extensions.filter((entry) => !isExtensionWithUri(entry, APS_A2A_IDENTITY_EXTENSION))
12
+ : [];
13
+ const result = {
14
+ ...card,
15
+ capabilities: {
16
+ ...card.capabilities,
17
+ extensions: [...existing, {
18
+ uri: APS_A2A_IDENTITY_EXTENSION,
19
+ description: 'APS verifiable agent identity and principal-binding references',
20
+ required,
21
+ params,
22
+ }],
23
+ },
24
+ };
25
+ delete result.signatures;
26
+ assertIJson(result);
27
+ return result;
28
+ }
29
+ export function signA2AAgentCardV1(card, privateKeyHex, kid) {
30
+ const unsigned = withoutSignatures(card);
31
+ assertIJson(unsigned);
32
+ const extension = getApsIdentityParamsV1(unsigned);
33
+ if (!kid.startsWith(`${extension.agent_id}#`))
34
+ throw new Error('A2A signature kid is not controlled by agent_id');
35
+ const protectedHeader = canonicalizeJCS({ alg: 'EdDSA', kid, typ: 'JOSE' });
36
+ const protectedB64 = base64url(Buffer.from(protectedHeader, 'utf8'));
37
+ const payloadB64 = base64url(Buffer.from(canonicalizeJCS(unsigned), 'utf8'));
38
+ const signatureHex = sign(`${protectedB64}.${payloadB64}`, privateKeyHex);
39
+ const signature = {
40
+ protected: protectedB64,
41
+ signature: base64url(Buffer.from(signatureHex, 'hex')),
42
+ };
43
+ return { ...unsigned, signatures: [signature] };
44
+ }
45
+ export async function verifyApsA2AAgentCardV1(candidate, options) {
46
+ let card;
47
+ let params;
48
+ try {
49
+ assertPlainRecord(candidate, 'Agent Card');
50
+ card = candidate;
51
+ assertIJson(card);
52
+ params = getApsIdentityParamsV1(card);
53
+ if (!Array.isArray(card.signatures) || card.signatures.length === 0)
54
+ throw new Error('missing signatures');
55
+ }
56
+ catch {
57
+ return result('invalid', 'A2A_CARD_MALFORMED', 'rejected');
58
+ }
59
+ const now = options.now ?? new Date().toISOString();
60
+ if (now < params.issued_at || now >= params.expires_at) {
61
+ return result('invalid', 'A2A_IDENTITY_EXTENSION_NOT_CURRENT', 'rejected', params.agent_id);
62
+ }
63
+ const unsigned = withoutSignatures(card);
64
+ const payloadB64 = base64url(Buffer.from(canonicalizeJCS(unsigned), 'utf8'));
65
+ let unresolvedKey = false;
66
+ let verifiedSignature = false;
67
+ for (const signature of card.signatures ?? []) {
68
+ let header;
69
+ try {
70
+ const raw = Buffer.from(signature.protected, 'base64url').toString('utf8');
71
+ header = JSON.parse(raw);
72
+ assertExactKeys(header, ['alg', 'kid', 'typ'], [], 'JWS protected header');
73
+ if (header.alg !== 'EdDSA' || header.typ !== 'JOSE' || typeof header.kid !== 'string')
74
+ continue;
75
+ if (!header.kid.startsWith(`${params.agent_id}#`))
76
+ continue;
77
+ }
78
+ catch {
79
+ continue;
80
+ }
81
+ const resolution = await options.resolve_key({
82
+ controller: params.agent_id,
83
+ verification_method: String(header.kid),
84
+ at: params.issued_at,
85
+ });
86
+ if (resolution.state === 'unreachable')
87
+ unresolvedKey = true;
88
+ if (resolution.state !== 'resolved' || !resolution.public_key_hex)
89
+ continue;
90
+ let signatureHex;
91
+ try {
92
+ signatureHex = Buffer.from(signature.signature, 'base64url').toString('hex');
93
+ }
94
+ catch {
95
+ continue;
96
+ }
97
+ if (verify(`${signature.protected}.${payloadB64}`, signatureHex, resolution.public_key_hex)) {
98
+ verifiedSignature = true;
99
+ break;
100
+ }
101
+ }
102
+ if (!verifiedSignature) {
103
+ return result(unresolvedKey ? 'indeterminate' : 'invalid', unresolvedKey ? 'A2A_SIGNING_KEY_UNREACHABLE' : 'A2A_SIGNATURE_INVALID', unresolvedKey ? 'unresolved' : 'rejected', params.agent_id);
104
+ }
105
+ if (!options.resolve_artifact) {
106
+ return {
107
+ ...result('indeterminate', 'A2A_IDENTITY_ARTIFACTS_UNRESOLVED', 'verified', params.agent_id),
108
+ passport: 'unresolved',
109
+ principal_binding: params.principal_binding_uri ? 'unresolved' : 'absent',
110
+ };
111
+ }
112
+ const passport = await resolveDigest(options.resolve_artifact, params.passport_uri, params.passport_sha256);
113
+ const principal = params.principal_binding_uri && params.principal_binding_sha256
114
+ ? await resolveDigest(options.resolve_artifact, params.principal_binding_uri, params.principal_binding_sha256)
115
+ : 'absent';
116
+ if (passport === 'mismatch' || principal === 'mismatch') {
117
+ return {
118
+ ...result('invalid', 'A2A_IDENTITY_ARTIFACT_DIGEST_MISMATCH', 'verified', params.agent_id),
119
+ passport,
120
+ principal_binding: principal,
121
+ };
122
+ }
123
+ if (passport === 'unresolved' || principal === 'unresolved') {
124
+ return {
125
+ ...result('indeterminate', 'A2A_IDENTITY_ARTIFACT_UNREACHABLE', 'verified', params.agent_id),
126
+ passport,
127
+ principal_binding: principal,
128
+ };
129
+ }
130
+ return {
131
+ state: 'valid',
132
+ code: 'OK',
133
+ agent_id: params.agent_id,
134
+ card_signature: 'verified',
135
+ passport,
136
+ principal_binding: principal,
137
+ };
138
+ }
139
+ /** Legacy custom fields do not carry the A2A JWS payload and cannot verify. */
140
+ export function assessLegacyAgentPassportExtension(_candidate) {
141
+ return { state: 'legacy_unverifiable', code: 'A2A_LEGACY_EXTENSION_UNSIGNED_PROJECTION' };
142
+ }
143
+ export function getApsIdentityParamsV1(card) {
144
+ const extensions = card.capabilities?.extensions;
145
+ if (!Array.isArray(extensions))
146
+ throw new Error('A2A Agent Card has no extensions');
147
+ const matches = extensions.filter((entry) => isExtensionWithUri(entry, APS_A2A_IDENTITY_EXTENSION));
148
+ if (matches.length !== 1)
149
+ throw new Error('A2A Agent Card must carry exactly one APS identity extension');
150
+ const extension = matches[0];
151
+ validateParams(extension.params);
152
+ return extension.params;
153
+ }
154
+ function validateParams(value) {
155
+ assertPlainRecord(value, 'APS A2A identity params');
156
+ assertExactKeys(value, [
157
+ 'agent_id', 'passport_uri', 'passport_sha256', 'issued_at', 'expires_at',
158
+ ], ['principal_binding_uri', 'principal_binding_sha256'], 'APS A2A identity params');
159
+ if (typeof value.agent_id !== 'string' || !value.agent_id.startsWith('did:'))
160
+ throw new Error('agent_id');
161
+ if (typeof value.passport_uri !== 'string' || !/^https:\/\//.test(value.passport_uri))
162
+ throw new Error('passport_uri');
163
+ assertHex(String(value.passport_sha256), 64, 'passport_sha256');
164
+ const hasBindingUri = typeof value.principal_binding_uri === 'string';
165
+ const hasBindingHash = typeof value.principal_binding_sha256 === 'string';
166
+ if (hasBindingUri !== hasBindingHash)
167
+ throw new Error('principal binding URI and digest must appear together');
168
+ if (hasBindingUri && !/^https:\/\//.test(String(value.principal_binding_uri)))
169
+ throw new Error('principal_binding_uri');
170
+ if (hasBindingHash)
171
+ assertHex(String(value.principal_binding_sha256), 64, 'principal_binding_sha256');
172
+ assertUtcMilliseconds(String(value.issued_at), 'issued_at');
173
+ assertUtcMilliseconds(String(value.expires_at), 'expires_at');
174
+ if (String(value.issued_at) >= String(value.expires_at))
175
+ throw new Error('A2A extension time window');
176
+ }
177
+ function withoutSignatures(card) {
178
+ const { signatures: _signatures, ...unsigned } = card;
179
+ return structuredClone(unsigned);
180
+ }
181
+ function isExtensionWithUri(value, uri) {
182
+ return value !== null && typeof value === 'object' && !Array.isArray(value) &&
183
+ value.uri === uri;
184
+ }
185
+ async function resolveDigest(resolve, uri, expected) {
186
+ try {
187
+ const bytes = await resolve(uri);
188
+ const actual = createHash('sha256').update(bytes).digest('hex');
189
+ return actual === expected ? 'resolved' : 'mismatch';
190
+ }
191
+ catch {
192
+ return 'unresolved';
193
+ }
194
+ }
195
+ function base64url(value) {
196
+ return Buffer.from(value).toString('base64url');
197
+ }
198
+ function result(state, code, signature, agentId) {
199
+ return {
200
+ state,
201
+ code,
202
+ ...(agentId === undefined ? {} : { agent_id: agentId }),
203
+ card_signature: signature,
204
+ passport: 'unresolved',
205
+ principal_binding: 'unresolved',
206
+ };
207
+ }
208
+ //# sourceMappingURL=identity-v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-v1.js","sourceRoot":"","sources":["../../../../src/profiles/a2a/identity-v1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './identity-v1.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/profiles/a2a/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './identity-v1.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/profiles/a2a/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,88 @@
1
+ import type { HistoricalKeyResolver } from '../../v2/identity-binding/types.js';
2
+ export declare const APS_MCP_AUTHORIZATION_META = "org.agent-passport/authorization";
3
+ export declare const APS_MCP_RECEIPT_META = "org.agent-passport/receipt";
4
+ export interface ApsMcpSpendV1 {
5
+ unit: string;
6
+ amount: string;
7
+ }
8
+ export interface ApsMcpAuthorizationV1 {
9
+ profile: 'aps-mcp-1';
10
+ agent_id: string;
11
+ verification_method: string;
12
+ delegation_ref: string;
13
+ mcp_server: string;
14
+ method: 'tools/call';
15
+ tool_name: string;
16
+ arguments_hash: string;
17
+ scope_required: string[];
18
+ spend?: ApsMcpSpendV1;
19
+ nonce: string;
20
+ issued_at: string;
21
+ expires_at: string;
22
+ action_ref: string;
23
+ signature: string;
24
+ }
25
+ export interface McpToolCallRequest {
26
+ method: 'tools/call';
27
+ params: {
28
+ name: string;
29
+ arguments?: Record<string, unknown>;
30
+ _meta?: Record<string, unknown>;
31
+ };
32
+ }
33
+ export interface McpToolCallResult extends Record<string, unknown> {
34
+ _meta?: Record<string, unknown>;
35
+ }
36
+ export interface ApsMcpAuthorityDecision {
37
+ state: 'permit' | 'deny' | 'indeterminate';
38
+ code: string;
39
+ decision_ref?: string;
40
+ }
41
+ export interface ApsMcpMiddlewareContext {
42
+ /** Set only after MCP transport OAuth/resource validation has succeeded. */
43
+ transport_authenticated: boolean;
44
+ }
45
+ export declare class ApsMcpAuthorizationError extends Error {
46
+ readonly code: string;
47
+ constructor(code: string);
48
+ }
49
+ export declare function computeMcpArgumentsHashV1(argumentsValue: Record<string, unknown>): string;
50
+ export declare function issueApsMcpAuthorizationV1(input: {
51
+ agent_id: string;
52
+ verification_method: string;
53
+ delegation_ref: string;
54
+ mcp_server: string;
55
+ tool_name: string;
56
+ arguments: Record<string, unknown>;
57
+ scope_required: readonly string[];
58
+ spend?: ApsMcpSpendV1;
59
+ nonce: string;
60
+ issued_at: string;
61
+ expires_at: string;
62
+ private_key_hex: string;
63
+ }): ApsMcpAuthorizationV1;
64
+ export declare function verifyApsMcpAuthorizationV1(candidate: unknown, expected: {
65
+ mcp_server: string;
66
+ tool_name: string;
67
+ arguments: Record<string, unknown>;
68
+ now?: string;
69
+ resolve_key: HistoricalKeyResolver;
70
+ }): Promise<{
71
+ state: 'valid' | 'invalid' | 'indeterminate';
72
+ code: string;
73
+ authorization?: ApsMcpAuthorizationV1;
74
+ }>;
75
+ /**
76
+ * Creates an unavoidable pre-dispatch guard for an MCP tools/call handler.
77
+ * Transport OAuth is checked first. The APS intent, replay claim, authority
78
+ * decision, and budget reservation all complete before dispatch is invoked.
79
+ */
80
+ export declare function createApsMcpToolCallMiddleware(options: {
81
+ mcp_server: string;
82
+ resolve_key: HistoricalKeyResolver;
83
+ consume_action_ref: (actionRef: string, expiresAt: string) => boolean | Promise<boolean>;
84
+ evaluate_authority: (authorization: ApsMcpAuthorizationV1, request: McpToolCallRequest) => ApsMcpAuthorityDecision | Promise<ApsMcpAuthorityDecision>;
85
+ emit_receipt: (authorization: ApsMcpAuthorizationV1, authority: ApsMcpAuthorityDecision, result: McpToolCallResult) => unknown | Promise<unknown>;
86
+ }): (request: McpToolCallRequest, context: ApsMcpMiddlewareContext, dispatch: (request: McpToolCallRequest) => McpToolCallResult | Promise<McpToolCallResult>) => Promise<McpToolCallResult>;
87
+ export declare function canonicalMcpServerUri(value: string): string;
88
+ //# sourceMappingURL=authorization-v1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization-v1.d.ts","sourceRoot":"","sources":["../../../../src/profiles/mcp/authorization-v1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ // Copyright (c) 2026 Tymofii Pidlisnyi
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { createHash } from 'node:crypto';
4
+ import { canonicalizeJCS } from '../../core/canonical-jcs.js';
5
+ import { sign, verify } from '../../crypto/keys.js';
6
+ import { computeActionRefV2, createActionReferenceInputV2, } from '../../v2/action-reference/v2.js';
7
+ import { assertExactKeys, assertHex, assertIJson, assertPlainRecord, assertSortedUnique, assertUtcMilliseconds, sortedUnique, } from '../../v2/identity-binding/validation.js';
8
+ export const APS_MCP_AUTHORIZATION_META = 'org.agent-passport/authorization';
9
+ export const APS_MCP_RECEIPT_META = 'org.agent-passport/receipt';
10
+ const INTENT_DOMAIN = 'APS-MCP-INTENT-V1\0';
11
+ const ARGUMENTS_DOMAIN = 'APS-MCP-ARGUMENTS-V1\0';
12
+ export class ApsMcpAuthorizationError extends Error {
13
+ code;
14
+ constructor(code) {
15
+ super(code);
16
+ this.code = code;
17
+ this.name = 'ApsMcpAuthorizationError';
18
+ }
19
+ }
20
+ export function computeMcpArgumentsHashV1(argumentsValue) {
21
+ assertIJson(argumentsValue);
22
+ return createHash('sha256')
23
+ .update(ARGUMENTS_DOMAIN + canonicalizeJCS(argumentsValue), 'utf8')
24
+ .digest('hex');
25
+ }
26
+ export function issueApsMcpAuthorizationV1(input) {
27
+ const server = canonicalMcpServerUri(input.mcp_server);
28
+ const argumentsHash = computeMcpArgumentsHashV1(input.arguments);
29
+ const scopes = sortedUnique(input.scope_required.map((scope) => scope.normalize('NFC')), 'scope_required');
30
+ const actionRef = computeActionRefV2(createActionReferenceInputV2({
31
+ agent_id: input.agent_id,
32
+ action_type: 'mcp:tools/call',
33
+ target: `${server}#tool=${encodeURIComponent(input.tool_name)}`,
34
+ payload_ref: argumentsHash,
35
+ scope_required: scopes,
36
+ issued_at: input.issued_at,
37
+ nonce: input.nonce,
38
+ }));
39
+ const unsigned = {
40
+ profile: 'aps-mcp-1',
41
+ agent_id: input.agent_id,
42
+ verification_method: input.verification_method,
43
+ delegation_ref: input.delegation_ref,
44
+ mcp_server: server,
45
+ method: 'tools/call',
46
+ tool_name: input.tool_name,
47
+ arguments_hash: argumentsHash,
48
+ scope_required: scopes,
49
+ ...(input.spend === undefined ? {} : { spend: input.spend }),
50
+ nonce: input.nonce,
51
+ issued_at: input.issued_at,
52
+ expires_at: input.expires_at,
53
+ action_ref: actionRef,
54
+ };
55
+ validateAuthorizationUnsigned(unsigned);
56
+ return {
57
+ ...unsigned,
58
+ signature: sign(INTENT_DOMAIN + canonicalizeJCS(unsigned), input.private_key_hex),
59
+ };
60
+ }
61
+ export async function verifyApsMcpAuthorizationV1(candidate, expected) {
62
+ let authorization;
63
+ try {
64
+ authorization = validateAuthorization(candidate);
65
+ }
66
+ catch {
67
+ return { state: 'invalid', code: 'MCP_AUTHORIZATION_MALFORMED' };
68
+ }
69
+ const expectedServer = canonicalMcpServerUri(expected.mcp_server);
70
+ if (authorization.mcp_server !== expectedServer || authorization.tool_name !== expected.tool_name) {
71
+ return { state: 'invalid', code: 'MCP_TARGET_MISMATCH' };
72
+ }
73
+ const argumentsHash = computeMcpArgumentsHashV1(expected.arguments);
74
+ if (argumentsHash !== authorization.arguments_hash) {
75
+ return { state: 'invalid', code: 'MCP_ARGUMENTS_MISMATCH' };
76
+ }
77
+ const recomputedActionRef = computeActionRefV2(createActionReferenceInputV2({
78
+ agent_id: authorization.agent_id,
79
+ action_type: 'mcp:tools/call',
80
+ target: `${authorization.mcp_server}#tool=${encodeURIComponent(authorization.tool_name)}`,
81
+ payload_ref: authorization.arguments_hash,
82
+ scope_required: authorization.scope_required,
83
+ issued_at: authorization.issued_at,
84
+ nonce: authorization.nonce,
85
+ }));
86
+ if (recomputedActionRef !== authorization.action_ref) {
87
+ return { state: 'invalid', code: 'MCP_ACTION_REF_MISMATCH' };
88
+ }
89
+ const now = expected.now ?? new Date().toISOString();
90
+ if (now < authorization.issued_at || now >= authorization.expires_at) {
91
+ return { state: 'invalid', code: 'MCP_AUTHORIZATION_NOT_CURRENT' };
92
+ }
93
+ const resolution = await expected.resolve_key({
94
+ controller: authorization.agent_id,
95
+ verification_method: authorization.verification_method,
96
+ at: authorization.issued_at,
97
+ });
98
+ if (resolution.state !== 'resolved' || !resolution.public_key_hex) {
99
+ return {
100
+ state: resolution.state === 'unreachable' ? 'indeterminate' : 'invalid',
101
+ code: `MCP_SIGNING_KEY_${resolution.state.toUpperCase()}`,
102
+ };
103
+ }
104
+ const unsigned = omit(authorization, ['signature']);
105
+ if (!verify(INTENT_DOMAIN + canonicalizeJCS(unsigned), authorization.signature, resolution.public_key_hex)) {
106
+ return { state: 'invalid', code: 'MCP_SIGNATURE_INVALID' };
107
+ }
108
+ return { state: 'valid', code: 'OK', authorization };
109
+ }
110
+ /**
111
+ * Creates an unavoidable pre-dispatch guard for an MCP tools/call handler.
112
+ * Transport OAuth is checked first. The APS intent, replay claim, authority
113
+ * decision, and budget reservation all complete before dispatch is invoked.
114
+ */
115
+ export function createApsMcpToolCallMiddleware(options) {
116
+ return async function apsMcpToolCall(request, context, dispatch) {
117
+ if (!context.transport_authenticated)
118
+ throw new ApsMcpAuthorizationError('MCP_TRANSPORT_UNAUTHENTICATED');
119
+ if (request.method !== 'tools/call')
120
+ throw new ApsMcpAuthorizationError('MCP_METHOD_UNSUPPORTED');
121
+ const metadata = request.params._meta;
122
+ const candidate = metadata?.[APS_MCP_AUTHORIZATION_META];
123
+ const verification = await verifyApsMcpAuthorizationV1(candidate, {
124
+ mcp_server: options.mcp_server,
125
+ tool_name: request.params.name,
126
+ arguments: request.params.arguments ?? {},
127
+ resolve_key: options.resolve_key,
128
+ });
129
+ if (verification.state !== 'valid' || !verification.authorization) {
130
+ throw new ApsMcpAuthorizationError(verification.code);
131
+ }
132
+ if (!await options.consume_action_ref(verification.authorization.action_ref, verification.authorization.expires_at))
133
+ throw new ApsMcpAuthorizationError('MCP_ACTION_REPLAY');
134
+ const authority = await options.evaluate_authority(verification.authorization, request);
135
+ if (authority.state !== 'permit')
136
+ throw new ApsMcpAuthorizationError(authority.code);
137
+ const dispatched = await dispatch(request);
138
+ const receipt = await options.emit_receipt(verification.authorization, authority, dispatched);
139
+ return {
140
+ ...dispatched,
141
+ _meta: {
142
+ ...(dispatched._meta ?? {}),
143
+ [APS_MCP_RECEIPT_META]: receipt,
144
+ },
145
+ };
146
+ };
147
+ }
148
+ export function canonicalMcpServerUri(value) {
149
+ const parsed = new URL(value);
150
+ if (!['https:', 'http:'].includes(parsed.protocol) || parsed.username || parsed.password || parsed.hash) {
151
+ throw new Error('Invalid MCP server resource URI');
152
+ }
153
+ if (parsed.protocol === 'http:' && !['localhost', '127.0.0.1', '[::1]'].includes(parsed.hostname)) {
154
+ throw new Error('MCP server resource URI requires HTTPS outside localhost');
155
+ }
156
+ if (parsed.pathname === '/' && !parsed.search)
157
+ parsed.pathname = '';
158
+ return parsed.toString().replace(/\/$/, '');
159
+ }
160
+ function validateAuthorization(candidate) {
161
+ assertPlainRecord(candidate, 'MCP authorization');
162
+ assertExactKeys(candidate, [
163
+ 'profile', 'agent_id', 'verification_method', 'delegation_ref', 'mcp_server',
164
+ 'method', 'tool_name', 'arguments_hash', 'scope_required', 'nonce',
165
+ 'issued_at', 'expires_at', 'action_ref', 'signature',
166
+ ], ['spend'], 'MCP authorization');
167
+ const unsigned = omit(candidate, ['signature']);
168
+ validateAuthorizationUnsigned(unsigned);
169
+ assertHex(String(candidate.signature), 128, 'signature');
170
+ return candidate;
171
+ }
172
+ function validateAuthorizationUnsigned(value) {
173
+ assertIJson(value);
174
+ if (value.profile !== 'aps-mcp-1' || value.method !== 'tools/call')
175
+ throw new Error('MCP profile');
176
+ if (!/^did:[a-z0-9]+:.+$/.test(value.agent_id))
177
+ throw new Error('agent_id');
178
+ if (!value.verification_method.startsWith(`${value.agent_id}#`))
179
+ throw new Error('verification_method');
180
+ if (typeof value.delegation_ref !== 'string' || value.delegation_ref.length === 0)
181
+ throw new Error('delegation_ref');
182
+ if (canonicalMcpServerUri(value.mcp_server) !== value.mcp_server)
183
+ throw new Error('non-canonical mcp_server');
184
+ if (!/^[A-Za-z0-9_.-]{1,128}$/.test(value.tool_name))
185
+ throw new Error('tool_name');
186
+ assertHex(value.arguments_hash, 64, 'arguments_hash');
187
+ if (!Array.isArray(value.scope_required))
188
+ throw new Error('scope_required');
189
+ assertSortedUnique(value.scope_required, 'scope_required');
190
+ for (const scope of value.scope_required)
191
+ if (scope !== scope.normalize('NFC'))
192
+ throw new Error('scope_required NFC');
193
+ if (value.spend !== undefined) {
194
+ assertPlainRecord(value.spend, 'spend');
195
+ assertExactKeys(value.spend, ['unit', 'amount'], [], 'spend');
196
+ if (!/^[A-Za-z0-9:._-]{1,64}$/.test(value.spend.unit))
197
+ throw new Error('spend unit');
198
+ if (!/^(0|[1-9]\d{0,18})$/.test(value.spend.amount))
199
+ throw new Error('spend amount');
200
+ }
201
+ assertHex(value.nonce, 32, 'nonce');
202
+ assertUtcMilliseconds(value.issued_at, 'issued_at');
203
+ assertUtcMilliseconds(value.expires_at, 'expires_at');
204
+ if (value.issued_at >= value.expires_at)
205
+ throw new Error('authorization time window');
206
+ assertHex(value.action_ref, 64, 'action_ref');
207
+ }
208
+ function omit(value, keys) {
209
+ const result = {};
210
+ for (const [key, entry] of Object.entries(value))
211
+ if (!keys.includes(key))
212
+ result[key] = entry;
213
+ return result;
214
+ }
215
+ //# sourceMappingURL=authorization-v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization-v1.js","sourceRoot":"","sources":["../../../../src/profiles/mcp/authorization-v1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './authorization-v1.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/profiles/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './authorization-v1.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/profiles/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './v2.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/action-reference/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './v2.js';
2
+ //# sourceMappingURL=index.js.map