@agentunion/fastaun 0.5.18 → 0.5.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +172 -79
- package/_packed_docs/CHANGELOG.md +172 -79
- package/_packed_docs/INDEX.md +244 -116
- package/_packed_docs/KITE_DOCS_GUIDE.md +98 -69
- package/_packed_docs/agent.md/SCHEMA.md +245 -205
- package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +11 -11
- package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +42 -15
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +4 -4
- package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +45 -134
- package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1072 -1072
- package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +5 -20
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +687 -668
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +19 -28
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +443 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +658 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
- package/_packed_docs/protocol/agent.md/SCHEMA.md +4 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +1 -1
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +68 -61
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +279 -285
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +3 -3
- package/_packed_docs/sdk/09-group-rpc-manual.md +271 -235
- package/_packed_docs/sdk/09-message-rpc-manual.md +47 -6
- package/_packed_docs/sdk/09-storage-rpc-manual.md +70 -68
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +63 -34
- package/_packed_docs/sdk/INDEX.md +105 -34
- package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +922 -0
- package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
- package/_packed_docs/sdk/Ownership2.1-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +300 -0
- package/_packed_docs/sdk/Ownership2.1-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +382 -0
- package/_packed_docs/sdk/Ownership2.1-TDD/345/210/206/351/230/266/346/256/265/345/256/236/346/226/275/350/256/241/345/210/222.md +708 -0
- package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +476 -0
- package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
- package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +173 -0
- package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +211 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/345/256/236/347/216/260/347/247/273/346/244/215/346/214/207/345/215/227.md +331 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +207 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +252 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/345/256/236/346/226/275/350/256/241/345/210/222.md +156 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/346/226/271/346/241/210.md +273 -0
- package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/350/257/246/347/273/206/350/256/276/350/256/241.md +211 -0
- package/dist/agent-md-schema.d.ts +15 -1
- package/dist/agent-md-schema.js +87 -24
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +54 -2
- package/dist/agent-md.js +637 -53
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +38 -59
- package/dist/aid-store.js +300 -265
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.js +30 -11
- package/dist/aid.js.map +1 -1
- package/dist/auth.d.ts +6 -1
- package/dist/auth.js +500 -15
- package/dist/auth.js.map +1 -1
- package/dist/cert-utils.d.ts +44 -2
- package/dist/cert-utils.js +149 -49
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/delivery.d.ts +11 -1
- package/dist/client/delivery.js +321 -62
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +1 -0
- package/dist/client/rpc-pipeline.js +142 -82
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +1 -0
- package/dist/client/v2-e2ee.js +166 -96
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +84 -1
- package/dist/client.js +780 -30
- package/dist/client.js.map +1 -1
- package/dist/errors.js +4 -3
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +9 -3
- package/dist/events.js +69 -11
- package/dist/events.js.map +1 -1
- package/dist/facades.d.ts +83 -3
- package/dist/facades.js +100 -6
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/keystore/aid-db.d.ts +5 -0
- package/dist/keystore/aid-db.js +57 -0
- package/dist/keystore/aid-db.js.map +1 -1
- package/dist/keystore/index.d.ts +8 -0
- package/dist/keystore/local-identity-store.js +10 -3
- package/dist/keystore/local-identity-store.js.map +1 -1
- package/dist/keystore/local-token-store.d.ts +6 -1
- package/dist/keystore/local-token-store.js +24 -1
- package/dist/keystore/local-token-store.js.map +1 -1
- package/dist/org-protocol.d.ts +98 -0
- package/dist/org-protocol.js +1753 -0
- package/dist/org-protocol.js.map +1 -0
- package/dist/ownership-proof.d.ts +82 -5
- package/dist/ownership-proof.js +327 -31
- package/dist/ownership-proof.js.map +1 -1
- package/dist/ownership-v21.d.ts +196 -0
- package/dist/ownership-v21.js +712 -0
- package/dist/ownership-v21.js.map +1 -0
- package/dist/ownership-workflow.d.ts +87 -0
- package/dist/ownership-workflow.js +1182 -0
- package/dist/ownership-workflow.js.map +1 -0
- package/dist/seq-tracker.d.ts +1 -0
- package/dist/seq-tracker.js +10 -1
- package/dist/seq-tracker.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +90 -1
- package/dist/tools/cross-sdk-agent.js +441 -7
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +8 -0
- package/dist/transport.js +118 -4
- package/dist/transport.js.map +1 -1
- package/dist/v2/e2ee/decrypt.d.ts +1 -0
- package/dist/v2/e2ee/decrypt.js +9 -1
- package/dist/v2/e2ee/decrypt.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/cert-utils.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { createSign, createVerify, X509Certificate, createHash } from 'node:crypto';
|
|
6
6
|
import { certificateSha256Fingerprint } from './crypto.js';
|
|
7
|
+
import { parseDocument } from 'yaml';
|
|
7
8
|
const AGENT_MD_SIGNATURE_MARKER = '<!-- AUN-SIGNATURE';
|
|
8
|
-
const AGENT_MD_SIGNATURE_RE = /^<!-- AUN-SIGNATURE(?:\r\n|\n|\r)(?<body>[\s\S]*?)(?:\r\n|\n|\r)-->\s*$/;
|
|
9
9
|
const FINGERPRINT_HEX_RE = /^[0-9a-f]+$/;
|
|
10
10
|
export function isStrictBase64(value) {
|
|
11
11
|
const text = String(value ?? '');
|
|
@@ -46,58 +46,156 @@ export function publicKeyMatchesFingerprint(certPem, fingerprint) {
|
|
|
46
46
|
return spkiHex.slice(0, 16) === expected;
|
|
47
47
|
return spkiHex === expected;
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
if (
|
|
58
|
-
return
|
|
49
|
+
export function parseAgentMdTailSignature(content, readCompatibility = false) {
|
|
50
|
+
if (new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(new TextEncoder().encode(content)) !== content)
|
|
51
|
+
return { payload: content, fields: null, signatures: [], parseError: 'document must be valid UTF-8 text' };
|
|
52
|
+
const first = content.indexOf(AGENT_MD_SIGNATURE_MARKER);
|
|
53
|
+
if (first < 0)
|
|
54
|
+
return { payload: content, fields: null, signatures: [] };
|
|
55
|
+
const payload = content.slice(0, first), signatures = [];
|
|
56
|
+
const failure = (reason) => ({ payload, fields: null, signatures, parseError: reason });
|
|
57
|
+
if (Buffer.byteLength(content.slice(first), 'utf8') > 2048)
|
|
58
|
+
return failure('document signature tail exceeds 2048 bytes');
|
|
59
|
+
let offset = first;
|
|
60
|
+
while (offset < content.length) {
|
|
61
|
+
if (offset > 0 && !/[\r\n]/.test(content[offset - 1]))
|
|
62
|
+
return failure('signature block must start on a new line');
|
|
63
|
+
const match = /^<!-- (AUN-SIGNATURE(?:-[A-Z0-9-]+)?)(?:\r\n|\n|\r)([\s\S]*?)(?:\r\n|\n|\r)-->(?=\s|$)/.exec(content.slice(offset));
|
|
64
|
+
if (!match)
|
|
65
|
+
return failure('malformed signature block');
|
|
66
|
+
const fields = {};
|
|
67
|
+
for (const rawLine of match[2].split(/\r\n|\n|\r/)) {
|
|
68
|
+
const line = rawLine.trim();
|
|
69
|
+
if (!line)
|
|
70
|
+
continue;
|
|
71
|
+
const colon = line.indexOf(':');
|
|
72
|
+
if (colon < 0)
|
|
73
|
+
return failure(`malformed signature field: ${line}`);
|
|
74
|
+
const key = line.slice(0, colon).trim().toLowerCase();
|
|
75
|
+
if (Object.hasOwn(fields, key))
|
|
76
|
+
return failure(`duplicate signature field: ${key}`);
|
|
77
|
+
fields[key] = line.slice(colon + 1).trim();
|
|
78
|
+
}
|
|
79
|
+
if (Object.keys(fields).some((key) => !['cert_fingerprint', 'public_key_fingerprint', 'timestamp', 'signature', 'signer_aid'].includes(key)))
|
|
80
|
+
return failure('signature block contains unknown fields');
|
|
81
|
+
for (const req of ['cert_fingerprint', 'timestamp', 'signature'])
|
|
82
|
+
if (!fields[req])
|
|
83
|
+
return failure(`signature block missing ${req}`);
|
|
84
|
+
const compatible = readCompatibility && signatures.length === 0;
|
|
85
|
+
const validFingerprint = (value) => compatible ? !!normalizeFingerprintHex(value) : /^sha256:[0-9a-f]{64}$/.test(value);
|
|
86
|
+
if (!validFingerprint(fields.cert_fingerprint))
|
|
87
|
+
return failure('invalid cert_fingerprint');
|
|
88
|
+
if ('public_key_fingerprint' in fields && !validFingerprint(fields.public_key_fingerprint))
|
|
89
|
+
return failure('invalid public_key_fingerprint');
|
|
90
|
+
if (!(compatible ? /^[0-9]+$/ : /^[1-9][0-9]*$/).test(fields.timestamp) || Number(fields.timestamp) <= 0 || !Number.isSafeInteger(Number(fields.timestamp)))
|
|
91
|
+
return failure('invalid timestamp');
|
|
92
|
+
if (!isStrictBase64(fields.signature))
|
|
93
|
+
return failure('invalid signature base64');
|
|
94
|
+
if (signatures.length > 0 && !fields.signer_aid)
|
|
95
|
+
return failure('additional signature requires signer_aid');
|
|
96
|
+
if (fields.signer_aid !== undefined && !/^[A-Za-z0-9_][A-Za-z0-9_-]*(?:\.[A-Za-z0-9_][A-Za-z0-9_-]*)+$/.test(fields.signer_aid))
|
|
97
|
+
return failure('invalid signer_aid');
|
|
98
|
+
const end = offset + match[0].length;
|
|
99
|
+
signatures.push({ fields, start: offset, end, signedPayload: content.slice(0, offset), tag: match[1].slice('AUN-SIGNATURE'.length).replace(/^-/, '') });
|
|
100
|
+
const gap = /^\s*/.exec(content.slice(end))[0];
|
|
101
|
+
offset = end + gap.length;
|
|
102
|
+
if (offset === content.length)
|
|
103
|
+
break;
|
|
104
|
+
if (!content.startsWith(AGENT_MD_SIGNATURE_MARKER, offset))
|
|
105
|
+
return failure('unexpected content after signature block');
|
|
59
106
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
107
|
+
return { payload, fields: signatures[0]?.fields ?? null, signatures };
|
|
108
|
+
}
|
|
109
|
+
export function signDocument(identity, content, options = {}) {
|
|
110
|
+
if (new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(new TextEncoder().encode(content)) !== content)
|
|
111
|
+
throw new Error('document must be valid UTF-8 text');
|
|
112
|
+
const parsed = parseAgentMdTailSignature(content);
|
|
113
|
+
if (parsed.parseError)
|
|
114
|
+
throw new Error(parsed.parseError);
|
|
115
|
+
let prefix = options.append ? content : parsed.payload;
|
|
116
|
+
if (prefix && !/[\r\n]$/.test(prefix)) {
|
|
117
|
+
if (options.append && parsed.fields)
|
|
118
|
+
prefix += '\n';
|
|
119
|
+
else
|
|
120
|
+
throw new Error('document payload must end with a newline before signature');
|
|
64
121
|
}
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
122
|
+
const timestamp = Math.trunc(options.timestamp ?? Date.now() / 1000);
|
|
123
|
+
const cert = new X509Certificate(identity.certPem);
|
|
124
|
+
if (certCommonName(identity.certPem) !== identity.aid || cert.publicKey.asymmetricKeyType !== 'ec' || cert.publicKey.asymmetricKeyDetails?.namedCurve !== 'prime256v1' || timestamp < Date.parse(cert.validFrom) / 1000 || timestamp > Date.parse(cert.validTo) / 1000)
|
|
125
|
+
throw new Error('signing certificate is invalid');
|
|
126
|
+
const signature = signBytes(identity.privateKeyPem, Buffer.from(prefix, 'utf8')).toString('base64');
|
|
127
|
+
const label = options.tag ?? '';
|
|
128
|
+
const tag = label ? `AUN-SIGNATURE-${label}` : 'AUN-SIGNATURE';
|
|
129
|
+
let block = buildAgentMdSignatureBlock(certificateSha256Fingerprint(identity.certPem), timestamp, signature, publicKeyFingerprint(identity.certPem), tag);
|
|
130
|
+
if (options.signerAid && options.signerAid !== identity.aid)
|
|
131
|
+
throw new Error('signer AID does not match signing identity');
|
|
132
|
+
if (options.append && parsed.fields || options.signerAid)
|
|
133
|
+
block = block.replace('cert_fingerprint:', `signer_aid: ${identity.aid}\ncert_fingerprint:`);
|
|
134
|
+
const signed = prefix + block, result = parseAgentMdTailSignature(signed);
|
|
135
|
+
if (Buffer.byteLength(signed.slice(result.payload.length), 'utf8') > 2048)
|
|
136
|
+
throw new Error('document signature tail exceeds 2048 bytes');
|
|
137
|
+
return { signed, signature, signatures: result.signatures.map((item) => ({ ...item.fields, ...item })) };
|
|
138
|
+
}
|
|
139
|
+
export function verifyDocument(content, options = {}) {
|
|
140
|
+
const parsed = parseAgentMdTailSignature(content, options.readCompatibility);
|
|
141
|
+
const records = [];
|
|
142
|
+
let firstFailure;
|
|
143
|
+
const invalid = (reason) => ({ valid: false, status: 'invalid', payload: parsed.payload, signatures: records, reason });
|
|
144
|
+
if (parsed.parseError)
|
|
145
|
+
return invalid(parsed.parseError);
|
|
146
|
+
if (!parsed.fields)
|
|
147
|
+
return { valid: false, status: 'unsigned', payload: parsed.payload, signatures: records };
|
|
148
|
+
if (Buffer.byteLength(content.slice(parsed.payload.length), 'utf8') > 2048)
|
|
149
|
+
return invalid('document signature tail exceeds 2048 bytes');
|
|
150
|
+
let inferredAid = options.expectedAid;
|
|
151
|
+
if (!inferredAid) {
|
|
152
|
+
const frontmatter = parsed.payload.replace(/^\ufeff/, '').match(/^---(?:\r\n|\n|\r)([\s\S]*?)(?:\r\n|\n|\r)---/);
|
|
153
|
+
if (frontmatter) {
|
|
154
|
+
try {
|
|
155
|
+
const doc = parseDocument(frontmatter[1]);
|
|
156
|
+
inferredAid = String(doc.get('aid') ?? doc.get('owner_aid') ?? '') || undefined;
|
|
157
|
+
}
|
|
158
|
+
catch { }
|
|
77
159
|
}
|
|
78
|
-
fields[key] = line.slice(colon + 1).trim();
|
|
79
160
|
}
|
|
80
|
-
for (
|
|
81
|
-
|
|
82
|
-
|
|
161
|
+
for (let i = 0; i < parsed.signatures.length; i++) {
|
|
162
|
+
const item = parsed.signatures[i], fields = item.fields;
|
|
163
|
+
const signer = fields.signer_aid ?? (i === 0 ? inferredAid : undefined);
|
|
164
|
+
let valid = false, reason = 'signature verification failed';
|
|
165
|
+
try {
|
|
166
|
+
if (!signer)
|
|
167
|
+
throw new Error('signature identity is required');
|
|
168
|
+
if (i === 0 && options.expectedAid && signer.toLowerCase() !== options.expectedAid.toLowerCase())
|
|
169
|
+
throw new Error('document signer does not match expected AID');
|
|
170
|
+
const certPem = i === 0 && options.primaryCertPem ? options.primaryCertPem : options.certificateResolver?.(signer, fields.cert_fingerprint, Number(fields.timestamp));
|
|
171
|
+
if (!certPem)
|
|
172
|
+
throw new Error('signing certificate is unavailable');
|
|
173
|
+
const cert = new X509Certificate(certPem), timestamp = Number(fields.timestamp), now = options.now ?? Date.now() / 1000;
|
|
174
|
+
const compatible = i === 0 && options.readCompatibility;
|
|
175
|
+
if (compatible ? certCommonName(certPem).toLowerCase() !== signer.toLowerCase() : certCommonName(certPem) !== signer)
|
|
176
|
+
throw new Error('certificate subject does not match signer AID');
|
|
177
|
+
if (cert.publicKey.asymmetricKeyType !== 'ec' || cert.publicKey.asymmetricKeyDetails?.namedCurve !== 'prime256v1')
|
|
178
|
+
throw new Error('signing certificate must use P-256');
|
|
179
|
+
if (timestamp < Date.parse(cert.validFrom) / 1000 || timestamp > Date.parse(cert.validTo) / 1000 || timestamp > now + 300)
|
|
180
|
+
throw new Error('signature timestamp is outside certificate validity');
|
|
181
|
+
if (options.requireCurrentValidity && (now < Date.parse(cert.validFrom) / 1000 || now > Date.parse(cert.validTo) / 1000))
|
|
182
|
+
throw new Error('signing certificate is expired or not yet valid');
|
|
183
|
+
if (!certMatchesFingerprint(certPem, fields.cert_fingerprint) && !(compatible && publicKeyMatchesFingerprint(certPem, fields.cert_fingerprint)))
|
|
184
|
+
throw new Error('certificate fingerprint mismatch');
|
|
185
|
+
if (fields.public_key_fingerprint && !publicKeyMatchesFingerprint(certPem, fields.public_key_fingerprint))
|
|
186
|
+
throw new Error('public key fingerprint mismatch');
|
|
187
|
+
valid = verifySignatureWithCert(certPem, Buffer.from(fields.signature, 'base64'), Buffer.from(item.signedPayload, 'utf8'));
|
|
83
188
|
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
reason = error instanceof Error ? error.message : String(error);
|
|
191
|
+
}
|
|
192
|
+
records.push({ ...fields, ...item, signer_aid: signer ?? '', valid, ...(!valid ? { reason } : {}) });
|
|
193
|
+
if (!valid)
|
|
194
|
+
firstFailure ??= reason;
|
|
84
195
|
}
|
|
85
|
-
if (
|
|
86
|
-
return
|
|
87
|
-
}
|
|
88
|
-
if (!/^sha256:[0-9a-f]{64}$/i.test(fields.cert_fingerprint)) {
|
|
89
|
-
return { payload: content.slice(0, idx), fields: null, parseError: 'invalid cert_fingerprint' };
|
|
90
|
-
}
|
|
91
|
-
if (fields.public_key_fingerprint && !/^sha256:[0-9a-f]{64}$/i.test(fields.public_key_fingerprint)) {
|
|
92
|
-
return { payload: content.slice(0, idx), fields: null, parseError: 'invalid public_key_fingerprint' };
|
|
93
|
-
}
|
|
94
|
-
if (!/^\d+$/.test(fields.timestamp)) {
|
|
95
|
-
return { payload: content.slice(0, idx), fields: null, parseError: 'invalid timestamp' };
|
|
96
|
-
}
|
|
97
|
-
if (!isStrictBase64(fields.signature)) {
|
|
98
|
-
return { payload: content.slice(0, idx), fields: null, parseError: 'invalid signature base64' };
|
|
99
|
-
}
|
|
100
|
-
return { payload: content.slice(0, idx), fields };
|
|
196
|
+
if (firstFailure)
|
|
197
|
+
return invalid(firstFailure);
|
|
198
|
+
return { valid: true, status: 'verified', payload: parsed.payload, signatures: records };
|
|
101
199
|
}
|
|
102
200
|
/** 从 agent.md frontmatter 提取 aid 字段 */
|
|
103
201
|
export function extractAgentMdAid(payload) {
|
|
@@ -123,9 +221,11 @@ export function normalizeAgentMdPayload(content) {
|
|
|
123
221
|
return parseAgentMdTailSignature(String(content ?? '')).payload;
|
|
124
222
|
}
|
|
125
223
|
/** 构造 agent.md 签名块 */
|
|
126
|
-
export function buildAgentMdSignatureBlock(certFingerprint, timestamp, signatureB64, publicKeyFp = '') {
|
|
224
|
+
export function buildAgentMdSignatureBlock(certFingerprint, timestamp, signatureB64, publicKeyFp = '', tag = 'AUN-SIGNATURE') {
|
|
225
|
+
if (!/^AUN-SIGNATURE(?:-[A-Z0-9-]+)?$/.test(tag))
|
|
226
|
+
throw new Error('invalid signature TAG');
|
|
127
227
|
const lines = [
|
|
128
|
-
|
|
228
|
+
`<!-- ${tag}`,
|
|
129
229
|
`cert_fingerprint: ${certFingerprint}`,
|
|
130
230
|
];
|
|
131
231
|
if (publicKeyFp)
|
package/dist/cert-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cert-utils.js","sourceRoot":"","sources":["../src/cert-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cert-utils.js","sourceRoot":"","sources":["../src/cert-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,11 @@ export declare class MessageDeliveryEngine {
|
|
|
13
13
|
private pendingGroupPullUpper;
|
|
14
14
|
private onlineUnreadHintTargets;
|
|
15
15
|
private onlineUnreadHintTasks;
|
|
16
|
+
private readonly backgroundPullNeeds;
|
|
17
|
+
private readonly backgroundPullTasks;
|
|
18
|
+
private backgroundPullCheckQueued;
|
|
19
|
+
private backgroundPullTimer;
|
|
20
|
+
private backgroundPullTimerAt;
|
|
16
21
|
private pendingP2PInlineAcks;
|
|
17
22
|
private pendingGroupInlineAcks;
|
|
18
23
|
private pendingGroupInlineAckNamespaces;
|
|
@@ -84,6 +89,11 @@ export declare class MessageDeliveryEngine {
|
|
|
84
89
|
pendingPullUpper(ns: string): number;
|
|
85
90
|
hasAnyPendingPull(): boolean;
|
|
86
91
|
onPullGateIdle(ns: string): void;
|
|
92
|
+
private recordBackgroundPullNeed;
|
|
93
|
+
observeBackgroundPullResponse(ns: string, afterSeq: number, result: unknown, limit?: number): void;
|
|
94
|
+
private finishBackgroundPull;
|
|
95
|
+
requestBackgroundPullRecovery(): void;
|
|
96
|
+
onForegroundPullsDrained(): void;
|
|
87
97
|
private recordPendingGroupPull;
|
|
88
98
|
private schedulePendingGroupPullIfNeeded;
|
|
89
99
|
prunePushedSeqs(ns: string): void;
|
|
@@ -215,7 +225,7 @@ export declare class MessageDeliveryEngine {
|
|
|
215
225
|
persistRepairedSeq(ns: string): void;
|
|
216
226
|
clampAckSeq(method: string, field: string, ns: string, seq: number): number;
|
|
217
227
|
clampAckParams(method: string, params: RpcParams): RpcParams;
|
|
218
|
-
drainOrderedMessages(ns: string, beforeSeq?: number, pullResponse?: boolean, persist?: boolean, source?: string, context?: DeliveryChangeContext): Promise<void>;
|
|
228
|
+
drainOrderedMessages(ns: string, beforeSeq?: number, pullResponse?: boolean, persist?: boolean, source?: string, context?: DeliveryChangeContext, throughSeq?: number): Promise<void>;
|
|
219
229
|
publishOrderedMessage(event: string, ns: string, seq: unknown, payload: EventPayload, source?: string): Promise<boolean>;
|
|
220
230
|
private publishOrderedMessageInternal;
|
|
221
231
|
publishPulledMessage(event: string, ns: string, seq: unknown, payload: EventPayload, persist?: boolean, source?: string): Promise<boolean>;
|