@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.
Files changed (154) hide show
  1. package/CHANGELOG.md +176 -78
  2. package/_packed_docs/CHANGELOG.md +176 -78
  3. package/_packed_docs/INDEX.md +288 -269
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +101 -95
  5. package/_packed_docs/agent.md/SCHEMA.md +7 -7
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +372 -331
  12. package/_packed_docs/protocol/08-AUN-E2EE.md +17 -12
  13. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +676 -676
  14. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +8 -12
  15. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +445 -0
  16. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
  17. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +666 -0
  18. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
  19. package/_packed_docs/protocol/agent.md/SCHEMA.md +1 -1
  20. 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
  21. 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
  22. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +1 -1
  23. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +5 -1
  24. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +64 -64
  25. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +70 -63
  26. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +43 -40
  27. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +179 -19
  28. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +50 -49
  29. package/_packed_docs/sdk/09-group-rpc-manual.md +261 -254
  30. package/_packed_docs/sdk/09-message-rpc-manual.md +253 -160
  31. package/_packed_docs/sdk/09-storage-rpc-manual.md +18 -26
  32. 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
  33. 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
  34. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +105 -92
  35. package/_packed_docs/sdk/INDEX.md +197 -167
  36. package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
  37. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
  38. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +930 -0
  39. package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
  40. 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
  41. 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
  42. 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
  43. package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +480 -0
  44. package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
  45. package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. package/dist/agent-md-schema.d.ts +16 -4
  55. package/dist/agent-md-schema.d.ts.map +1 -1
  56. package/dist/agent-md-schema.js +65 -30
  57. package/dist/agent-md-schema.js.map +1 -1
  58. package/dist/agent-md.d.ts +35 -3
  59. package/dist/agent-md.d.ts.map +1 -1
  60. package/dist/agent-md.js +384 -150
  61. package/dist/agent-md.js.map +1 -1
  62. package/dist/aid-store.d.ts +59 -0
  63. package/dist/aid-store.d.ts.map +1 -1
  64. package/dist/aid-store.js +202 -16
  65. package/dist/aid-store.js.map +1 -1
  66. package/dist/aid.d.ts +4 -1
  67. package/dist/aid.d.ts.map +1 -1
  68. package/dist/aid.js +24 -42
  69. package/dist/aid.js.map +1 -1
  70. package/dist/auth.d.ts +1 -1
  71. package/dist/auth.d.ts.map +1 -1
  72. package/dist/auth.js +89 -18
  73. package/dist/auth.js.map +1 -1
  74. package/dist/bundle.js +6410 -1848
  75. package/dist/cert-utils.d.ts +50 -1
  76. package/dist/cert-utils.d.ts.map +1 -1
  77. package/dist/cert-utils.js +123 -56
  78. package/dist/cert-utils.js.map +1 -1
  79. package/dist/client/delivery.d.ts +108 -16
  80. package/dist/client/delivery.d.ts.map +1 -1
  81. package/dist/client/delivery.js +1411 -184
  82. package/dist/client/delivery.js.map +1 -1
  83. package/dist/client/rpc-pipeline.d.ts +4 -1
  84. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  85. package/dist/client/rpc-pipeline.js +203 -117
  86. package/dist/client/rpc-pipeline.js.map +1 -1
  87. package/dist/client/v2-e2ee.d.ts +22 -3
  88. package/dist/client/v2-e2ee.d.ts.map +1 -1
  89. package/dist/client/v2-e2ee.js +1312 -684
  90. package/dist/client/v2-e2ee.js.map +1 -1
  91. package/dist/client.d.ts +23 -2
  92. package/dist/client.d.ts.map +1 -1
  93. package/dist/client.js +419 -101
  94. package/dist/client.js.map +1 -1
  95. package/dist/config.d.ts +4 -0
  96. package/dist/config.d.ts.map +1 -1
  97. package/dist/config.js +1 -0
  98. package/dist/config.js.map +1 -1
  99. package/dist/crypto.d.ts.map +1 -1
  100. package/dist/crypto.js +8 -6
  101. package/dist/crypto.js.map +1 -1
  102. package/dist/events.d.ts +24 -3
  103. package/dist/events.d.ts.map +1 -1
  104. package/dist/events.js +171 -29
  105. package/dist/events.js.map +1 -1
  106. package/dist/facades.d.ts +42 -1
  107. package/dist/facades.d.ts.map +1 -1
  108. package/dist/facades.js +368 -12
  109. package/dist/facades.js.map +1 -1
  110. package/dist/index.d.ts +6 -4
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +1 -1
  113. package/dist/index.js.map +1 -1
  114. package/dist/keystore/index.d.ts +14 -1
  115. package/dist/keystore/index.d.ts.map +1 -1
  116. package/dist/keystore/indexeddb-identity-store.d.ts +4 -0
  117. package/dist/keystore/indexeddb-identity-store.d.ts.map +1 -1
  118. package/dist/keystore/indexeddb-identity-store.js +30 -13
  119. package/dist/keystore/indexeddb-identity-store.js.map +1 -1
  120. package/dist/keystore/indexeddb-shared.d.ts +19 -2
  121. package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
  122. package/dist/keystore/indexeddb-shared.js +193 -6
  123. package/dist/keystore/indexeddb-shared.js.map +1 -1
  124. package/dist/keystore/indexeddb-token-store.d.ts +15 -2
  125. package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
  126. package/dist/keystore/indexeddb-token-store.js +308 -27
  127. package/dist/keystore/indexeddb-token-store.js.map +1 -1
  128. package/dist/org-protocol.d.ts +45 -0
  129. package/dist/org-protocol.d.ts.map +1 -1
  130. package/dist/org-protocol.js +827 -21
  131. package/dist/org-protocol.js.map +1 -1
  132. package/dist/ownership-v21.d.ts +43 -9
  133. package/dist/ownership-v21.d.ts.map +1 -1
  134. package/dist/ownership-v21.js +183 -81
  135. package/dist/ownership-v21.js.map +1 -1
  136. package/dist/ownership-workflow.d.ts +36 -1
  137. package/dist/ownership-workflow.d.ts.map +1 -1
  138. package/dist/ownership-workflow.js +610 -89
  139. package/dist/ownership-workflow.js.map +1 -1
  140. package/dist/seq-tracker.d.ts +2 -0
  141. package/dist/seq-tracker.d.ts.map +1 -1
  142. package/dist/seq-tracker.js +3 -2
  143. package/dist/seq-tracker.js.map +1 -1
  144. package/dist/tools/cross-sdk-agent.d.ts +61 -3
  145. package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
  146. package/dist/tools/cross-sdk-agent.js +524 -45
  147. package/dist/tools/cross-sdk-agent.js.map +1 -1
  148. package/dist/transport.d.ts +4 -0
  149. package/dist/transport.d.ts.map +1 -1
  150. package/dist/transport.js +64 -30
  151. package/dist/transport.js.map +1 -1
  152. package/dist/version.d.ts +1 -1
  153. package/dist/version.js +1 -1
  154. package/package.json +1 -1
@@ -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 declare function parseAgentMdTailSignature(content: string): {
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;
@@ -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,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CA8C1I;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,WAAW,SAAK,EAChB,GAAG,SAAkB,GACpB,MAAM,CASR;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAazD;AAsBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYvD;AAoDD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAsC/D;AAED,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3F;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvH;AAED,OAAO,EAAE,4BAA4B,IAAI,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"cert-utils.d.ts","sourceRoot":"","sources":["../src/cert-utils.ts"],"names":[],"mappings":"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"}
@@ -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][A-Z0-9-]*)?(?:\r\n|\n|\r)(?<body>[\s\S]*?)(?:\r\n|\n|\r)-->\s*$/;
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
- const idx = content.lastIndexOf(AGENT_MD_SIGNATURE_MARKER);
59
- if (idx < 0)
60
- return { payload: content, fields: null };
61
- if (content.indexOf(AGENT_MD_SIGNATURE_MARKER) !== idx) {
62
- return { payload: content.slice(0, idx), fields: null, parseError: 'agent.md must contain exactly one signature block' };
63
- }
64
- if (idx > 0 && content[idx - 1] !== '\n' && content[idx - 1] !== '\r') {
65
- return { payload: content.slice(0, idx), fields: null, parseError: 'agent.md signature block must start on a new line' };
66
- }
67
- const tail = content.slice(idx);
68
- const match = tail.match(AGENT_MD_SIGNATURE_RE);
69
- if (!match)
70
- return { payload: content.slice(0, idx), fields: null, parseError: '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 { payload: content.slice(0, idx), fields: null, parseError: `malformed signature field: ${line}` };
79
- const key = line.slice(0, colon).trim().toLowerCase();
80
- if (Object.prototype.hasOwnProperty.call(fields, key)) {
81
- return { payload: content.slice(0, idx), fields: null, parseError: `duplicate signature field: ${key}` };
82
- }
83
- fields[key] = line.slice(colon + 1).trim();
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
- catch { }
97
- }
98
- if (Object.keys(fields).some((key) => !['cert_fingerprint', 'public_key_fingerprint', 'timestamp', 'signature', ...(entity ? ['signer_aid'] : [])].includes(key))) {
99
- return { payload: content.slice(0, idx), fields: null, parseError: 'signature block contains unknown fields' };
100
- }
101
- if (!/^sha256:[0-9a-f]{64}$/.test(fields.cert_fingerprint)) {
102
- return { payload: content.slice(0, idx), fields: null, parseError: 'invalid cert_fingerprint' };
103
- }
104
- if (fields.public_key_fingerprint !== undefined && !/^sha256:[0-9a-f]{64}$/.test(fields.public_key_fingerprint)) {
105
- return { payload: content.slice(0, idx), fields: null, parseError: 'invalid public_key_fingerprint' };
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 (!/^[1-9][0-9]*$/.test(fields.timestamp) || !Number.isSafeInteger(Number(fields.timestamp))) {
108
- return { payload: content.slice(0, idx), fields: null, parseError: 'invalid timestamp' };
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
- if (!isStrictBase64(fields.signature)) {
111
- return { payload: content.slice(0, idx), fields: null, parseError: 'invalid signature base64' };
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
- return { payload: content.slice(0, idx), fields };
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][A-Z0-9-]*)?$/.test(tag))
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) {
@@ -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
- beginVolatileDelivery(message: JsonObject): 'claimed' | 'seen' | 'inflight';
147
- finishVolatileDelivery(message: JsonObject): void;
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
- drainOrderedMessages(ns: string, beforeSeq?: number, pullResponse?: boolean, persist?: boolean, batch?: DeliveryChangeBatch, source?: string, throughSeq?: number): Promise<void>;
233
- publishOrderedMessage(event: string, ns: string, seq: unknown, payload: EventPayload, source?: string, operationBatch?: DeliveryChangeBatch): Promise<boolean>;
234
- publishPulledMessage(event: string, ns: string, seq: unknown, payload: EventPayload, persist?: boolean, source?: string, operationBatch?: DeliveryChangeBatch): Promise<boolean>;
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