@agentunion/fastaun-browser 0.5.19 → 0.5.21
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 +176 -78
- package/_packed_docs/CHANGELOG.md +176 -78
- package/_packed_docs/INDEX.md +288 -269
- package/_packed_docs/KITE_DOCS_GUIDE.md +101 -95
- package/_packed_docs/agent.md/SCHEMA.md +7 -7
- package/_packed_docs/agent.md/working/AID/347/261/273/345/236/213-owner/345/205/263/347/263/273/344/270/216/346/215/242owner/347/274/226/346/216/222/346/226/271/346/241/210.md +530 -0
- package/_packed_docs/agent.md/working/AID/347/261/273/345/236/213-owner/345/205/263/347/263/273/345/256/214/346/225/264/350/256/276/350/256/241/344/270/216/345/256/236/346/226/275/350/256/241/345/210/222.md +685 -0
- package/_packed_docs/agent.md/working/agent.md-schema/344/270/216/347/255/276/345/217/221/351/252/214/347/255/276/346/265/201/347/250/213/346/276/204/346/270/205.md +349 -0
- package/_packed_docs/agent.md/working//346/234/254/345/234/260Docker/346/265/213/350/257/225Bug/346/270/205/345/215/225.md +40 -0
- 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/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +372 -331
- package/_packed_docs/protocol/08-AUN-E2EE.md +17 -12
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +676 -676
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +8 -12
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +445 -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 +666 -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 +1 -1
- package/_packed_docs/sdk/0.5.21-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +368 -0
- package/_packed_docs/sdk/0.5.21-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +350 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +1 -1
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +5 -1
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +64 -64
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +70 -63
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +43 -40
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +179 -19
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +50 -49
- package/_packed_docs/sdk/09-group-rpc-manual.md +261 -254
- package/_packed_docs/sdk/09-message-rpc-manual.md +253 -160
- package/_packed_docs/sdk/09-storage-rpc-manual.md +18 -26
- package/_packed_docs/sdk/09-/345/207/255/350/257/201/346/234/215/345/212/241RPC/346/211/213/345/206/214.md +71 -0
- package/_packed_docs/sdk/09-/347/273/204/347/273/207/346/234/215/345/212/241RPC/346/211/213/345/206/214.md +88 -0
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +105 -92
- package/_packed_docs/sdk/INDEX.md +197 -167
- 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 +930 -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 +363 -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 +553 -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 +480 -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 +16 -4
- package/dist/agent-md-schema.d.ts.map +1 -1
- package/dist/agent-md-schema.js +65 -30
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +35 -3
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +384 -150
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +59 -0
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +202 -16
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.d.ts +4 -1
- package/dist/aid.d.ts.map +1 -1
- package/dist/aid.js +24 -42
- package/dist/aid.js.map +1 -1
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +89 -18
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +6410 -1848
- package/dist/cert-utils.d.ts +50 -1
- package/dist/cert-utils.d.ts.map +1 -1
- package/dist/cert-utils.js +123 -56
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/delivery.d.ts +108 -16
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +1411 -184
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +4 -1
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +203 -117
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +22 -3
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +1312 -684
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +23 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +419 -101
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +8 -6
- package/dist/crypto.js.map +1 -1
- package/dist/events.d.ts +24 -3
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +171 -29
- package/dist/events.js.map +1 -1
- package/dist/facades.d.ts +42 -1
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +368 -12
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/keystore/index.d.ts +14 -1
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/indexeddb-identity-store.d.ts +4 -0
- package/dist/keystore/indexeddb-identity-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-identity-store.js +30 -13
- package/dist/keystore/indexeddb-identity-store.js.map +1 -1
- package/dist/keystore/indexeddb-shared.d.ts +19 -2
- package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.js +193 -6
- package/dist/keystore/indexeddb-shared.js.map +1 -1
- package/dist/keystore/indexeddb-token-store.d.ts +15 -2
- package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-token-store.js +308 -27
- package/dist/keystore/indexeddb-token-store.js.map +1 -1
- package/dist/org-protocol.d.ts +45 -0
- package/dist/org-protocol.d.ts.map +1 -1
- package/dist/org-protocol.js +827 -21
- package/dist/org-protocol.js.map +1 -1
- package/dist/ownership-v21.d.ts +43 -9
- package/dist/ownership-v21.d.ts.map +1 -1
- package/dist/ownership-v21.js +183 -81
- package/dist/ownership-v21.js.map +1 -1
- package/dist/ownership-workflow.d.ts +36 -1
- package/dist/ownership-workflow.d.ts.map +1 -1
- package/dist/ownership-workflow.js +610 -89
- package/dist/ownership-workflow.js.map +1 -1
- package/dist/seq-tracker.d.ts +2 -0
- package/dist/seq-tracker.d.ts.map +1 -1
- package/dist/seq-tracker.js +3 -2
- package/dist/seq-tracker.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +61 -3
- package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
- package/dist/tools/cross-sdk-agent.js +524 -45
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +4 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +64 -30
- package/dist/transport.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.d.ts
CHANGED
|
@@ -4,15 +4,64 @@ export declare function normalizeFingerprintHex(value: string | null | undefined
|
|
|
4
4
|
export declare function publicKeyFingerprint(certPem: string): Promise<string>;
|
|
5
5
|
export declare function certMatchesFingerprint(certPem: string, fingerprint: string | null | undefined): Promise<boolean>;
|
|
6
6
|
export declare function publicKeyMatchesFingerprint(certPem: string, fingerprint: string | null | undefined): Promise<boolean>;
|
|
7
|
-
export
|
|
7
|
+
export interface DocumentSignature {
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
fields: Record<string, string>;
|
|
10
|
+
tag: string;
|
|
11
|
+
start: number;
|
|
12
|
+
end: number;
|
|
13
|
+
signedPayload: string;
|
|
14
|
+
valid?: boolean;
|
|
15
|
+
reason?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ParsedDocument {
|
|
8
18
|
payload: string;
|
|
9
19
|
fields: Record<string, string> | null;
|
|
20
|
+
signatures: DocumentSignature[];
|
|
10
21
|
parseError?: string;
|
|
22
|
+
}
|
|
23
|
+
export type DocumentCertificateResolver = (aid: string, fingerprint: string, timestamp: number) => Promise<string | {
|
|
24
|
+
certPem: string;
|
|
25
|
+
}> | string | {
|
|
26
|
+
certPem: string;
|
|
11
27
|
};
|
|
28
|
+
export interface DocumentSigningIdentity {
|
|
29
|
+
aid: string;
|
|
30
|
+
certPem: string;
|
|
31
|
+
certFingerprint: string;
|
|
32
|
+
privateKeyPem: string;
|
|
33
|
+
isCertValid(): boolean;
|
|
34
|
+
isPrivateKeyValid(): boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function parseAgentMdTailSignature(content: string): ParsedDocument;
|
|
37
|
+
export declare function parseAgentMdTailSignatureForRead(content: string): ParsedDocument;
|
|
38
|
+
export declare function signDocument(identity: DocumentSigningIdentity, content: string, options?: {
|
|
39
|
+
append?: boolean;
|
|
40
|
+
tag?: string;
|
|
41
|
+
now?: number;
|
|
42
|
+
signerAid?: boolean;
|
|
43
|
+
}): Promise<{
|
|
44
|
+
signed: string;
|
|
45
|
+
signature: string;
|
|
46
|
+
signatures: DocumentSignature[];
|
|
47
|
+
}>;
|
|
48
|
+
export declare function verifyDocument(content: string, resolver: DocumentCertificateResolver, options?: {
|
|
49
|
+
expectedAid?: string;
|
|
50
|
+
reading?: boolean;
|
|
51
|
+
now?: number;
|
|
52
|
+
requireCurrentValidity?: boolean;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
valid: boolean;
|
|
55
|
+
status: "verified" | "invalid" | "unsigned";
|
|
56
|
+
payload: string;
|
|
57
|
+
signatures: DocumentSignature[];
|
|
58
|
+
reason: string | undefined;
|
|
59
|
+
}>;
|
|
12
60
|
export declare function normalizeAgentMdPayload(content: string): string;
|
|
13
61
|
export declare function buildAgentMdSignatureBlock(certFingerprint: string, timestamp: number, signatureB64: string, publicKeyFp?: string, tag?: string): string;
|
|
14
62
|
export declare function extractAgentMdAid(payload: string): string;
|
|
15
63
|
export declare function publicKeyDerB64(certPem: string): string;
|
|
64
|
+
export declare function publicKeyCurve(certPem: string): string;
|
|
16
65
|
export interface CertMetadata {
|
|
17
66
|
subject: string;
|
|
18
67
|
issuer: string;
|
package/dist/cert-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cert-utils.d.ts","sourceRoot":"","sources":["../src/cert-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,EAO7B,MAAM,aAAa,CAAC;AAOrB,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAMhF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3E;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAStH;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3H;AAED,
|
|
1
|
+
{"version":3,"file":"cert-utils.d.ts","sourceRoot":"","sources":["../src/cert-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/cert-utils.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { base64ToUint8, certificateSha256Fingerprint, ecdsaSignDer, ecdsaVerifyDer, importCertPublicKeyEcdsa, importPrivateKeyEcdsa, pemToArrayBuffer, uint8ToBase64, } from './crypto.js';
|
|
2
|
-
import { parseDocument } from 'yaml';
|
|
3
2
|
const AGENT_MD_SIGNATURE_MARKER = '<!-- AUN-SIGNATURE';
|
|
4
|
-
const AGENT_MD_SIGNATURE_RE = /^<!-- AUN-SIGNATURE(?:-[A-Z0-9
|
|
3
|
+
const AGENT_MD_SIGNATURE_RE = /^<!-- AUN-SIGNATURE(?:-[A-Z0-9-]+)?(?:\r\n|\n|\r)(?<body>[\s\S]*?)(?:\r\n|\n|\r)-->\s*$/;
|
|
5
4
|
const FINGERPRINT_HEX_RE = /^[0-9a-f]+$/;
|
|
6
5
|
export function isStrictBase64(value) {
|
|
7
6
|
const text = String(value ?? '');
|
|
@@ -54,69 +53,116 @@ export async function publicKeyMatchesFingerprint(certPem, fingerprint) {
|
|
|
54
53
|
return spkiHex.slice(0, 16) === expected;
|
|
55
54
|
return spkiHex === expected;
|
|
56
55
|
}
|
|
57
|
-
export function parseAgentMdTailSignature(content) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
for (const req of ['cert_fingerprint', 'timestamp', 'signature']) {
|
|
86
|
-
if (!fields[req])
|
|
87
|
-
return { payload: content.slice(0, idx), fields: null, parseError: `signature block missing ${req}` };
|
|
88
|
-
}
|
|
89
|
-
let entity = false;
|
|
90
|
-
const frontmatter = content.slice(0, idx).replace(/^\ufeff/, '').match(/^---(?:\r\n|\n|\r)([\s\S]*?)(?:\r\n|\n|\r)---(?:\r\n|\n|\r)/);
|
|
91
|
-
if (frontmatter) {
|
|
92
|
-
try {
|
|
93
|
-
const doc = parseDocument(frontmatter[1]);
|
|
94
|
-
entity = !doc.errors.length && ['group', 'org'].includes(String(doc.get('type')));
|
|
56
|
+
export function parseAgentMdTailSignature(content) { return parseAgentMdTailSignatureForPurpose(content); }
|
|
57
|
+
export function parseAgentMdTailSignatureForRead(content) { return parseAgentMdTailSignatureForPurpose(content, true); }
|
|
58
|
+
function parseAgentMdTailSignatureForPurpose(content, reading = false) {
|
|
59
|
+
if (new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(new TextEncoder().encode(content)) !== content)
|
|
60
|
+
return { payload: content, fields: null, signatures: [], parseError: 'document must be valid UTF-8' };
|
|
61
|
+
const positions = Array.from(content.matchAll(/<!-- AUN-SIGNATURE/g), (match) => match.index);
|
|
62
|
+
const result = { payload: positions.length ? content.slice(0, positions[0]) : content, fields: null, signatures: [] };
|
|
63
|
+
const fail = (reason) => ({ ...result, fields: null, parseError: reason });
|
|
64
|
+
for (let index = 0; index < positions.length; index++) {
|
|
65
|
+
const start = positions[index];
|
|
66
|
+
if (start > 0 && !/[\r\n]/.test(content[start - 1]))
|
|
67
|
+
return fail('agent.md signature block must start on a new line');
|
|
68
|
+
const tail = content.slice(start, positions[index + 1] ?? content.length), match = tail.match(AGENT_MD_SIGNATURE_RE);
|
|
69
|
+
if (!match)
|
|
70
|
+
return fail('malformed signature block');
|
|
71
|
+
const fields = {};
|
|
72
|
+
for (const rawLine of match.groups?.body?.split(/\r\n|\n|\r/) ?? []) {
|
|
73
|
+
const line = rawLine.trim();
|
|
74
|
+
if (!line)
|
|
75
|
+
continue;
|
|
76
|
+
const colon = line.indexOf(':');
|
|
77
|
+
if (colon < 0)
|
|
78
|
+
return fail('malformed signature field');
|
|
79
|
+
const key = line.slice(0, colon).trim().toLowerCase();
|
|
80
|
+
if (Object.hasOwn(fields, key))
|
|
81
|
+
return fail(`duplicate signature field: ${key}`);
|
|
82
|
+
fields[key] = line.slice(colon + 1).trim();
|
|
95
83
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
84
|
+
for (const field of ['cert_fingerprint', 'timestamp', 'signature'])
|
|
85
|
+
if (!fields[field])
|
|
86
|
+
return fail(`signature block missing ${field}`);
|
|
87
|
+
if (Object.keys(fields).some((key) => !['cert_fingerprint', 'public_key_fingerprint', 'timestamp', 'signature', 'signer_aid'].includes(key)))
|
|
88
|
+
return fail('signature block contains unknown fields');
|
|
89
|
+
if (index > 0 && !fields.signer_aid)
|
|
90
|
+
return fail('additional signature requires signer_aid');
|
|
91
|
+
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))
|
|
92
|
+
return fail('invalid signer_aid');
|
|
93
|
+
const compatible = reading && index === 0;
|
|
94
|
+
if (compatible ? !normalizeFingerprintHex(fields.cert_fingerprint) : !/^sha256:[0-9a-f]{64}$/.test(fields.cert_fingerprint))
|
|
95
|
+
return fail('invalid cert_fingerprint');
|
|
96
|
+
if (fields.public_key_fingerprint !== undefined && (compatible ? !normalizeFingerprintHex(fields.public_key_fingerprint) : !/^sha256:[0-9a-f]{64}$/.test(fields.public_key_fingerprint)))
|
|
97
|
+
return fail('invalid public_key_fingerprint');
|
|
98
|
+
if (!(compatible ? /^[0-9]+$/ : /^[1-9][0-9]*$/).test(fields.timestamp) || !Number.isSafeInteger(Number(fields.timestamp)) || Number(fields.timestamp) <= 0)
|
|
99
|
+
return fail('invalid timestamp');
|
|
100
|
+
if (!isStrictBase64(fields.signature))
|
|
101
|
+
return fail('invalid signature base64');
|
|
102
|
+
result.signatures.push({ ...fields, fields, tag: tail.slice('<!-- AUN-SIGNATURE'.length, tail.search(/[\r\n]/)).replace(/^-/, ''), start, end: start + tail.lastIndexOf('-->') + 3, signedPayload: content.slice(0, start) });
|
|
106
103
|
}
|
|
107
|
-
if (
|
|
108
|
-
return
|
|
104
|
+
if (new TextEncoder().encode(content.slice(positions[0] ?? content.length)).length > 2048)
|
|
105
|
+
return fail('document signatures exceed 2048 bytes');
|
|
106
|
+
result.fields = result.signatures[0]?.fields ?? null;
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
export async 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');
|
|
112
|
+
const parsed = parseAgentMdTailSignature(content);
|
|
113
|
+
if (parsed.parseError)
|
|
114
|
+
throw new Error(parsed.parseError);
|
|
115
|
+
const now = Math.trunc(options.now ?? Date.now() / 1000), meta = parseCertMetadata(identity.certPem);
|
|
116
|
+
if (meta.subject.trim().toLowerCase() !== identity.aid.trim().toLowerCase())
|
|
117
|
+
throw new Error('signing certificate subject does not match AID');
|
|
118
|
+
if (!identity.isCertValid() || !identity.isPrivateKeyValid() || !identity.privateKeyPem || now < meta.notBefore.getTime() / 1000 || now > meta.notAfter.getTime() / 1000)
|
|
119
|
+
throw new Error('signing identity is not currently valid');
|
|
120
|
+
let prefix = options.append ? content : parsed.payload;
|
|
121
|
+
if (prefix && !/[\r\n]$/.test(prefix)) {
|
|
122
|
+
if (!options.append || !parsed.signatures.length)
|
|
123
|
+
throw new Error('document payload must end with a newline before signature');
|
|
124
|
+
prefix += '\n';
|
|
109
125
|
}
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
const signature = await signBytes(identity.privateKeyPem, new TextEncoder().encode(prefix));
|
|
127
|
+
const tag = options.tag ? `AUN-SIGNATURE-${options.tag}` : 'AUN-SIGNATURE';
|
|
128
|
+
let block = buildAgentMdSignatureBlock(identity.certFingerprint, now, signature, await publicKeyFingerprint(identity.certPem), tag);
|
|
129
|
+
if (options.signerAid || options.append && parsed.signatures.length)
|
|
130
|
+
block = block.replace('cert_fingerprint:', `signer_aid: ${identity.aid}\ncert_fingerprint:`);
|
|
131
|
+
const signed = prefix + block, result = parseAgentMdTailSignature(signed);
|
|
132
|
+
if (result.parseError)
|
|
133
|
+
throw new Error(result.parseError);
|
|
134
|
+
return { signed, signature, signatures: result.signatures };
|
|
135
|
+
}
|
|
136
|
+
export async function verifyDocument(content, resolver, options = {}) {
|
|
137
|
+
if (new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(new TextEncoder().encode(content)) !== content)
|
|
138
|
+
return { valid: false, status: 'invalid', payload: content, signatures: [], reason: 'document must be valid UTF-8' };
|
|
139
|
+
const parsed = options.reading ? parseAgentMdTailSignatureForRead(content) : parseAgentMdTailSignature(content);
|
|
140
|
+
const output = { valid: false, status: 'invalid', payload: parsed.payload, signatures: parsed.signatures, reason: parsed.parseError };
|
|
141
|
+
if (parsed.parseError)
|
|
142
|
+
return output;
|
|
143
|
+
if (!parsed.signatures.length)
|
|
144
|
+
return { ...output, status: 'unsigned' };
|
|
145
|
+
const now = options.now ?? Date.now() / 1000;
|
|
146
|
+
for (let index = 0; index < parsed.signatures.length; index++) {
|
|
147
|
+
const block = parsed.signatures[index], fields = block.fields, signer = fields.signer_aid ?? options.expectedAid ?? extractAgentMdAid(parsed.payload);
|
|
148
|
+
const material = await resolver(signer, fields.cert_fingerprint, Number(fields.timestamp)), certPem = typeof material === 'string' ? material : material.certPem;
|
|
149
|
+
const meta = parseCertMetadata(certPem), timestamp = Number(fields.timestamp);
|
|
150
|
+
const subjectMatches = (index !== 0 || !options.expectedAid || signer.toLowerCase() === options.expectedAid.toLowerCase()) && (!signer || meta.subject.trim().toLowerCase() === signer.trim().toLowerCase());
|
|
151
|
+
const certMatches = options.reading && index === 0 ? await certMatchesFingerprint(certPem, fields.cert_fingerprint) : await certificateSha256Fingerprint(certPem) === fields.cert_fingerprint;
|
|
152
|
+
block.valid = subjectMatches && certMatches && timestamp >= meta.notBefore.getTime() / 1000 && timestamp <= meta.notAfter.getTime() / 1000 && timestamp <= now + 300 && (!options.requireCurrentValidity || now >= meta.notBefore.getTime() / 1000 && now <= meta.notAfter.getTime() / 1000) && (!fields.public_key_fingerprint || await publicKeyMatchesFingerprint(certPem, fields.public_key_fingerprint)) && await verifySignatureWithCert(certPem, fields.signature, new TextEncoder().encode(block.signedPayload));
|
|
153
|
+
if (!block.valid)
|
|
154
|
+
block.reason = timestamp < meta.notBefore.getTime() / 1000 || timestamp > meta.notAfter.getTime() / 1000 ? 'signature timestamp is outside certificate validity' : 'signature verification failed';
|
|
112
155
|
}
|
|
113
|
-
|
|
156
|
+
output.valid = parsed.signatures.every((block) => block.valid);
|
|
157
|
+
output.status = output.valid ? 'verified' : 'invalid';
|
|
158
|
+
output.reason = parsed.signatures.find((block) => !block.valid)?.reason;
|
|
159
|
+
return output;
|
|
114
160
|
}
|
|
115
161
|
export function normalizeAgentMdPayload(content) {
|
|
116
162
|
return parseAgentMdTailSignature(String(content ?? '')).payload;
|
|
117
163
|
}
|
|
118
164
|
export function buildAgentMdSignatureBlock(certFingerprint, timestamp, signatureB64, publicKeyFp = '', tag = 'AUN-SIGNATURE') {
|
|
119
|
-
if (!/^AUN-SIGNATURE(?:-[A-Z0-9
|
|
165
|
+
if (!/^AUN-SIGNATURE(?:-[A-Z0-9-]+)?$/.test(tag))
|
|
120
166
|
throw new Error('invalid signature TAG');
|
|
121
167
|
const lines = [
|
|
122
168
|
`<!-- ${tag}`,
|
|
@@ -186,6 +232,27 @@ export function publicKeyDerB64(certPem) {
|
|
|
186
232
|
return '';
|
|
187
233
|
return uint8ToBase64(certDer.slice(pos, spki.fullEnd));
|
|
188
234
|
}
|
|
235
|
+
export function publicKeyCurve(certPem) {
|
|
236
|
+
try {
|
|
237
|
+
const der = base64ToUint8(publicKeyDerB64(certPem));
|
|
238
|
+
const spki = readDerTlv(der, 0);
|
|
239
|
+
const algorithm = spki?.tag === 0x30 ? readDerTlv(der, spki.valueStart) : null;
|
|
240
|
+
const oid = algorithm?.tag === 0x30 ? readDerTlv(der, algorithm.valueStart) : null;
|
|
241
|
+
if (!oid || oid.tag !== 0x06)
|
|
242
|
+
return '';
|
|
243
|
+
const hex = (start, end) => Array.from(der.slice(start, end)).map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
244
|
+
const algorithmOid = hex(oid.valueStart, oid.valueEnd);
|
|
245
|
+
if (algorithmOid === '2b6570')
|
|
246
|
+
return 'Ed25519';
|
|
247
|
+
if (algorithmOid !== '2a8648ce3d0201')
|
|
248
|
+
return '';
|
|
249
|
+
const curve = readDerTlv(der, oid.fullEnd);
|
|
250
|
+
return curve?.tag === 0x06 ? { '2a8648ce3d030107': 'P-256', '2b81040022': 'P-384' }[hex(curve.valueStart, curve.valueEnd)] ?? '' : '';
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
return '';
|
|
254
|
+
}
|
|
255
|
+
}
|
|
189
256
|
// ── 证书元数据解析(subject CN / issuer CN / 有效期)────────────────
|
|
190
257
|
/** 从 Name(SEQUENCE) 范围内提取 CN(OID 2.5.4.3 = 55 04 03)。失败返回 ''。 */
|
|
191
258
|
function extractCommonName(der, nameStart, nameEnd) {
|
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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EventPayload } from '../events.js';
|
|
1
|
+
import type { ApplicationMessageReservation, EventHandler, EventPayload } from '../events.js';
|
|
2
2
|
import { SeqTracker } from '../seq-tracker.js';
|
|
3
3
|
import { type JsonObject, type Message, type RpcParams } from '../types.js';
|
|
4
4
|
import type { ClientRuntime } from './runtime.js';
|
|
@@ -14,11 +14,81 @@ export type DeliveryChangeBatch = {
|
|
|
14
14
|
changes: Map<string, number>;
|
|
15
15
|
closed: boolean;
|
|
16
16
|
};
|
|
17
|
+
export type ApplicationDeliveryPage = {
|
|
18
|
+
namespace: string;
|
|
19
|
+
source: string;
|
|
20
|
+
handlers: Map<string, EventHandler[]>;
|
|
21
|
+
batch: boolean;
|
|
22
|
+
items: Array<{
|
|
23
|
+
event: string;
|
|
24
|
+
payload: EventPayload;
|
|
25
|
+
}>;
|
|
26
|
+
effects: Array<() => void | Promise<void>>;
|
|
27
|
+
afterDelivery: Array<() => void | Promise<void>>;
|
|
28
|
+
cleanup: Array<() => void>;
|
|
29
|
+
claims: Map<string, {
|
|
30
|
+
sender_aid: string;
|
|
31
|
+
message_id: string;
|
|
32
|
+
}>;
|
|
33
|
+
consumed: Set<number>;
|
|
34
|
+
seen: Set<string>;
|
|
35
|
+
done: Promise<void>;
|
|
36
|
+
resolve: () => void;
|
|
37
|
+
reject: (error: unknown) => void;
|
|
38
|
+
ensureCurrent: () => void;
|
|
39
|
+
closed: boolean;
|
|
40
|
+
flushed: boolean;
|
|
41
|
+
deferred: boolean;
|
|
42
|
+
tailProof?: TailWindowProof;
|
|
43
|
+
reservation?: ApplicationMessageReservation;
|
|
44
|
+
};
|
|
17
45
|
type GroupEventGapOptions = {
|
|
18
46
|
afterSeq?: number;
|
|
19
47
|
singlePage?: boolean;
|
|
20
48
|
};
|
|
21
49
|
export declare class MessageDeliveryEngine {
|
|
50
|
+
private peerBootstrapContext;
|
|
51
|
+
private peerTracker;
|
|
52
|
+
private peerTrackerGeneration;
|
|
53
|
+
private peerBootstrapFloor;
|
|
54
|
+
private peerInitializations;
|
|
55
|
+
private peerInitialized;
|
|
56
|
+
private committedSeqTrackerStates;
|
|
57
|
+
private seqTrackerNamespaceGenerations;
|
|
58
|
+
private peerDirectoryRequests;
|
|
59
|
+
private peerRecoveries;
|
|
60
|
+
private peerPendingSeqHints;
|
|
61
|
+
private peerPendingConfirmedThrough;
|
|
62
|
+
private peerRecoveryTimer;
|
|
63
|
+
private peerVolatileCursors;
|
|
64
|
+
private peerDirectoryDirty;
|
|
65
|
+
private peerDirectoryRefreshing;
|
|
66
|
+
private p2pDeliveryInflight;
|
|
67
|
+
private p2pDeliveryCompleted;
|
|
68
|
+
peerNamespace(sender: string): string;
|
|
69
|
+
peerSender(ns: string): string;
|
|
70
|
+
private peerContext;
|
|
71
|
+
private isPeerInitialized;
|
|
72
|
+
initializePeer(sender: string, initial?: number): Promise<void>;
|
|
73
|
+
peerDurableAck(ns: string): number;
|
|
74
|
+
rememberCommittedSeqState(ns: string): void;
|
|
75
|
+
committedSeqTrackerAck(ns: string): number;
|
|
76
|
+
captureSeqNamespaceGeneration(ns: string): string;
|
|
77
|
+
isSeqNamespaceGenerationCurrent(ns: string, generation: string): boolean;
|
|
78
|
+
private isReliableSeqNamespace;
|
|
79
|
+
peers(params?: RpcParams, background?: boolean): Promise<Record<string, unknown>>;
|
|
80
|
+
pullPeers(params?: RpcParams, background?: boolean): Promise<Record<string, unknown>>;
|
|
81
|
+
schedulePeerRecovery(sender: string, head?: number, volatile?: boolean): void;
|
|
82
|
+
private requestPeerRecovery;
|
|
83
|
+
refreshPeerDirectory(): Promise<void>;
|
|
84
|
+
private orderBackgroundPeers;
|
|
85
|
+
peerBackgroundPullPriority(ns: string): number | undefined;
|
|
86
|
+
consumePeerBackgroundPullPriority(ns: string, covered: number, next?: number): void;
|
|
87
|
+
peerVolatileCursor(sender: string): string;
|
|
88
|
+
setPeerVolatileCursor(sender: string, cursor: string, page?: ApplicationDeliveryPage): void;
|
|
89
|
+
ownPeerType(): Promise<string>;
|
|
90
|
+
private requestPeerDirectoryRefresh;
|
|
91
|
+
private handlePeerNotification;
|
|
22
92
|
private readonly runtime;
|
|
23
93
|
private syncRun;
|
|
24
94
|
private syncingNamespaces;
|
|
@@ -32,11 +102,15 @@ export declare class MessageDeliveryEngine {
|
|
|
32
102
|
private pendingPullNoProgressAcks;
|
|
33
103
|
private onlineUnreadHintTargets;
|
|
34
104
|
private onlineUnreadHintOwners;
|
|
105
|
+
private backgroundPullDemands;
|
|
106
|
+
private backgroundPullTimer;
|
|
107
|
+
private backgroundPullRecoveryQueued;
|
|
35
108
|
private realtimeAcking;
|
|
36
109
|
private pendingP2PInlineAcks;
|
|
37
110
|
private pendingGroupInlineAcks;
|
|
38
111
|
private pendingGroupInlineAckNamespaces;
|
|
39
112
|
private pendingTailWindows;
|
|
113
|
+
private deferredApplicationPages;
|
|
40
114
|
private volatileContext;
|
|
41
115
|
private volatilePullCursorValue;
|
|
42
116
|
private volatileSeenMessages;
|
|
@@ -44,13 +118,20 @@ export declare class MessageDeliveryEngine {
|
|
|
44
118
|
private inlineGeneration;
|
|
45
119
|
private seqTrackerWriteChain;
|
|
46
120
|
constructor(runtime: ClientRuntime);
|
|
121
|
+
beginApplicationPage(namespace: string, source?: string, reservation?: ApplicationMessageReservation): ApplicationDeliveryPage | undefined;
|
|
122
|
+
flushApplicationPage(page?: ApplicationDeliveryPage): Promise<void>;
|
|
123
|
+
abortApplicationPage(page: ApplicationDeliveryPage | undefined, error: unknown): void;
|
|
124
|
+
deferApplicationEffect(page: ApplicationDeliveryPage | undefined, effect: () => void | Promise<void>): void;
|
|
125
|
+
deferApplicationAfterDelivery(page: ApplicationDeliveryPage | undefined, effect: () => void | Promise<void>): void;
|
|
126
|
+
private applicationOwnership;
|
|
47
127
|
resetInlineAckState(): void;
|
|
48
128
|
isInlineGenerationCurrent(generation: number): boolean;
|
|
49
129
|
private isPullOperationCurrent;
|
|
50
130
|
private ensurePullOperationCurrent;
|
|
51
131
|
private isPullScopedSource;
|
|
52
132
|
captureInlineGeneration(): number;
|
|
53
|
-
deferTailWindow(ns: string, proof: TailWindowProof): void;
|
|
133
|
+
deferTailWindow(ns: string, proof: TailWindowProof, page?: ApplicationDeliveryPage): void;
|
|
134
|
+
private pendingTailProofs;
|
|
54
135
|
prospectiveTailState(ns: string): SyncTriplet;
|
|
55
136
|
pendingTailDeliveryThrough(ns: string, scanThrough: number): number;
|
|
56
137
|
commitPendingTailWindow(ns: string, scanThrough: number): void;
|
|
@@ -63,6 +144,10 @@ export declare class MessageDeliveryEngine {
|
|
|
63
144
|
private syncStopped;
|
|
64
145
|
hasPendingPull(ns: string): boolean;
|
|
65
146
|
onPullGateIdle(ns: string): void;
|
|
147
|
+
private recordBackgroundPullDemand;
|
|
148
|
+
observeBackgroundPullResponse(ns: string, afterSeq: number, result: Record<string, unknown>, limit?: number): void;
|
|
149
|
+
private finishBackgroundPull;
|
|
150
|
+
requestBackgroundPullRecovery(): void;
|
|
66
151
|
onForegroundPullsDrained(): void;
|
|
67
152
|
onPullWorkSettled(): void;
|
|
68
153
|
private deliveryChangeNamespace;
|
|
@@ -83,7 +168,7 @@ export declare class MessageDeliveryEngine {
|
|
|
83
168
|
private markRealtimeTailCompleted;
|
|
84
169
|
private isRealtimeTailCompleted;
|
|
85
170
|
prunePushedSeqs(ns: string): void;
|
|
86
|
-
markPublishedSeq(ns: string, seq: number): void;
|
|
171
|
+
markPublishedSeq(ns: string, seq: number, page?: ApplicationDeliveryPage): void;
|
|
87
172
|
fireGroupEventAck(groupId: string, ns: string, eventSeq: number, label: string): void;
|
|
88
173
|
fireGroupV2Ack(groupId: string, ns: string, seq: number, label: string, generation?: number | null): void;
|
|
89
174
|
private fireP2PV2Ack;
|
|
@@ -114,8 +199,8 @@ export declare class MessageDeliveryEngine {
|
|
|
114
199
|
}>;
|
|
115
200
|
enqueueOrderedMessage(ns: string, event: string, seq: number, payload: EventPayload, source?: string): void;
|
|
116
201
|
isGroupEventNamespace(ns: string): boolean;
|
|
117
|
-
publishOrderedQueueItem(ns: string, event: string, seq: number, payload: EventPayload, pullResponse?: boolean, source?: string, batch?: DeliveryChangeBatch): Promise<void>;
|
|
118
|
-
publishOrderedGroupChanged(payload: EventPayload, source?: string): Promise<void>;
|
|
202
|
+
publishOrderedQueueItem(ns: string, event: string, seq: number, payload: EventPayload, pullResponse?: boolean, source?: string, batch?: DeliveryChangeBatch, page?: ApplicationDeliveryPage): Promise<void>;
|
|
203
|
+
publishOrderedGroupChanged(payload: EventPayload, source?: string, page?: ApplicationDeliveryPage, ns?: string, owned?: boolean): Promise<void>;
|
|
119
204
|
isInstanceScopedMessageEvent(event: string): boolean;
|
|
120
205
|
attachCurrentInstanceContext(payload: EventPayload): EventPayload;
|
|
121
206
|
normalizePublishedMessagePayload(event: string, payload: EventPayload, source?: string): EventPayload;
|
|
@@ -142,19 +227,23 @@ export declare class MessageDeliveryEngine {
|
|
|
142
227
|
shouldResetVolatileCursor(cursor: string, error: unknown): boolean;
|
|
143
228
|
private volatileSeenKey;
|
|
144
229
|
isVolatileSeen(message: JsonObject): boolean;
|
|
145
|
-
markVolatileSeen(message: JsonObject): void;
|
|
146
|
-
|
|
147
|
-
|
|
230
|
+
markVolatileSeen(message: JsonObject, page?: ApplicationDeliveryPage): void;
|
|
231
|
+
waitVolatileApplicationDelivery(message: JsonObject, page?: ApplicationDeliveryPage): Promise<void>;
|
|
232
|
+
beginVolatileDelivery(message: JsonObject, page?: ApplicationDeliveryPage): 'claimed' | 'seen' | 'inflight';
|
|
233
|
+
finishVolatileDelivery(message: JsonObject, page?: ApplicationDeliveryPage): void;
|
|
148
234
|
publicVolatileMessage(message: JsonObject): JsonObject;
|
|
149
|
-
ackVolatileMessages(messages: JsonObject[], v2: boolean, advanceCursor: boolean): Promise<unknown>;
|
|
150
|
-
publishPlainVolatileMessages(messages: JsonObject[], source: string, advanceCursor: boolean): Promise<JsonObject[]>;
|
|
235
|
+
ackVolatileMessages(messages: JsonObject[], v2: boolean, advanceCursor: boolean, page?: ApplicationDeliveryPage): Promise<unknown>;
|
|
236
|
+
publishPlainVolatileMessages(messages: JsonObject[], source: string, advanceCursor: boolean, page?: ApplicationDeliveryPage): Promise<JsonObject[]>;
|
|
151
237
|
messageRecallDedupKey(payload: JsonObject): string;
|
|
152
|
-
publishMessageRecallTombstone(seq: unknown, message: EventPayload, source?: string): Promise<boolean>;
|
|
238
|
+
publishMessageRecallTombstone(seq: unknown, message: EventPayload, source?: string, page?: ApplicationDeliveryPage, owned?: boolean): Promise<boolean>;
|
|
153
239
|
recallEventFromGroupMessage(message: EventPayload): JsonObject | null;
|
|
154
240
|
groupRecallDedupKey(groupId: string, payload: JsonObject): string;
|
|
155
|
-
publishGroupRecallTombstone(groupId: string, seq: unknown, message: EventPayload, source?: string): Promise<boolean>;
|
|
241
|
+
publishGroupRecallTombstone(groupId: string, seq: unknown, message: EventPayload, source?: string, page?: ApplicationDeliveryPage, owned?: boolean): Promise<boolean>;
|
|
156
242
|
onRawGroupMessageRecalled(data: EventPayload): Promise<void>;
|
|
157
|
-
publishAppEvent(event: string, payload: EventPayload, source?: string, ns?: string, batch?: DeliveryChangeBatch): Promise<void>;
|
|
243
|
+
publishAppEvent(event: string, payload: EventPayload, source?: string, ns?: string, batch?: DeliveryChangeBatch, page?: ApplicationDeliveryPage): Promise<void>;
|
|
244
|
+
private publishAppEventInternal;
|
|
245
|
+
private applicationNamespace;
|
|
246
|
+
private recordApplicationDeliveryChange;
|
|
158
247
|
messageTargetsCurrentInstance(message: EventPayload): boolean;
|
|
159
248
|
isSelfSentGroupMessage(message: EventPayload): boolean;
|
|
160
249
|
isSelfSentP2PMessage(message: EventPayload): boolean;
|
|
@@ -211,6 +300,7 @@ export declare class MessageDeliveryEngine {
|
|
|
211
300
|
enqueueOnlineUnreadP2pHint(data: JsonObject): void;
|
|
212
301
|
restoreSeqTrackerState(): Promise<void>;
|
|
213
302
|
migrateSeqStateGroupIds<T>(state: Record<string, T>): Promise<Record<string, T>>;
|
|
303
|
+
private restoreCommittedSeqStates;
|
|
214
304
|
saveSeqTrackerState(): Promise<void>;
|
|
215
305
|
persistSeq(ns: string, forceSeq?: number): void;
|
|
216
306
|
commitSeqTrackerState(ns: string): Promise<void>;
|
|
@@ -224,14 +314,16 @@ export declare class MessageDeliveryEngine {
|
|
|
224
314
|
private scheduleSeqTrackerFlush;
|
|
225
315
|
private cancelSeqTrackerFlushTimer;
|
|
226
316
|
private writeSeqTrackerState;
|
|
317
|
+
private useCommittedSeqStates;
|
|
227
318
|
private enqueueSeqTrackerWrite;
|
|
228
319
|
private writeSeqTrackerStateNow;
|
|
229
320
|
persistRepairedSeq(ns: string): void;
|
|
230
321
|
clampAckSeq(method: string, field: string, ns: string, seq: number): number;
|
|
231
322
|
clampAckParams(method: string, params: RpcParams): RpcParams;
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
323
|
+
private consumeOrderedSequence;
|
|
324
|
+
drainOrderedMessages(ns: string, beforeSeq?: number, pullResponse?: boolean, persist?: boolean, batch?: DeliveryChangeBatch, source?: string, throughSeq?: number, page?: ApplicationDeliveryPage): Promise<void>;
|
|
325
|
+
publishOrderedMessage(event: string, ns: string, seq: unknown, payload: EventPayload, source?: string, operationBatch?: DeliveryChangeBatch, page?: ApplicationDeliveryPage): Promise<boolean>;
|
|
326
|
+
publishPulledMessage(event: string, ns: string, seq: unknown, payload: EventPayload, persist?: boolean, source?: string, operationBatch?: DeliveryChangeBatch, page?: ApplicationDeliveryPage): Promise<boolean>;
|
|
235
327
|
}
|
|
236
328
|
export {};
|
|
237
329
|
//# sourceMappingURL=delivery.d.ts.map
|