@xyo-network/event-kit-xl1 0.1.9 → 1.0.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalizedStatementPublication.d.ts","sourceRoot":"","sources":["../../src/finalizedStatementPublication.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"finalizedStatementPublication.d.ts","sourceRoot":"","sources":["../../src/finalizedStatementPublication.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshakePublication.d.ts","sourceRoot":"","sources":["../../src/handshakePublication.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"handshakePublication.d.ts","sourceRoot":"","sources":["../../src/handshakePublication.ts"],"names":[],"mappings":"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"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -55,8 +55,8 @@ function sameValue(left, right) {
|
|
|
55
55
|
if (typeof left !== "object" || left === null || typeof right !== "object" || right === null) return false;
|
|
56
56
|
const leftRecord = left;
|
|
57
57
|
const rightRecord = right;
|
|
58
|
-
const leftKeys = Object.keys(leftRecord).
|
|
59
|
-
const rightKeys = Object.keys(rightRecord).
|
|
58
|
+
const leftKeys = Object.keys(leftRecord).toSorted();
|
|
59
|
+
const rightKeys = Object.keys(rightRecord).toSorted();
|
|
60
60
|
return sameStrings(leftKeys, rightKeys) && leftKeys.every((key) => sameValue(leftRecord[key], rightRecord[key]));
|
|
61
61
|
}
|
|
62
62
|
function sameIntent(left, right) {
|
|
@@ -180,8 +180,8 @@ function sameValue2(left, right) {
|
|
|
180
180
|
if (typeof left !== "object" || left === null || typeof right !== "object" || right === null) return false;
|
|
181
181
|
const leftRecord = left;
|
|
182
182
|
const rightRecord = right;
|
|
183
|
-
const leftKeys = Object.keys(leftRecord).
|
|
184
|
-
const rightKeys = Object.keys(rightRecord).
|
|
183
|
+
const leftKeys = Object.keys(leftRecord).toSorted();
|
|
184
|
+
const rightKeys = Object.keys(rightRecord).toSorted();
|
|
185
185
|
return sameStrings2(leftKeys, rightKeys) && leftKeys.every((key) => sameValue2(leftRecord[key], rightRecord[key]));
|
|
186
186
|
}
|
|
187
187
|
function sameIntent2(left, right) {
|
|
@@ -199,16 +199,19 @@ function intentFromRecord2(record2) {
|
|
|
199
199
|
function acceptanceAttachmentHashes(statements) {
|
|
200
200
|
const hashes = /* @__PURE__ */ new Set();
|
|
201
201
|
for (const statement of statements) {
|
|
202
|
-
|
|
203
|
-
if (object.schema !== WakeSubscriptionAcceptanceSchema) continue;
|
|
204
|
-
const acceptance = WakeSubscriptionAcceptanceZod.safeParse(object);
|
|
205
|
-
if (!acceptance.success) throw new TypeError("Claimed wake subscription acceptance is malformed");
|
|
206
|
-
hashes.add(acceptance.data.challenge);
|
|
207
|
-
hashes.add(acceptance.data.response);
|
|
208
|
-
}
|
|
202
|
+
addAcceptanceAttachmentHashes(hashes, statement);
|
|
209
203
|
}
|
|
210
204
|
return hashes;
|
|
211
205
|
}
|
|
206
|
+
function addAcceptanceAttachmentHashes(hashes, statement) {
|
|
207
|
+
for (const object of statement.objects) {
|
|
208
|
+
if (object.schema !== WakeSubscriptionAcceptanceSchema) continue;
|
|
209
|
+
const acceptance = WakeSubscriptionAcceptanceZod.safeParse(object);
|
|
210
|
+
if (!acceptance.success) throw new TypeError("Claimed wake subscription acceptance is malformed");
|
|
211
|
+
hashes.add(acceptance.data.challenge);
|
|
212
|
+
hashes.add(acceptance.data.response);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
212
215
|
async function assertExactAcceptanceAttachments(statements, attachments) {
|
|
213
216
|
const missing = acceptanceAttachmentHashes(statements);
|
|
214
217
|
const supplied = /* @__PURE__ */ new Set();
|
|
@@ -231,9 +234,9 @@ async function assertExactAcceptanceAttachments(statements, attachments) {
|
|
|
231
234
|
}
|
|
232
235
|
function signingIntent(transaction) {
|
|
233
236
|
const intent = structuredClone(transaction);
|
|
234
|
-
intent.$signatures.
|
|
235
|
-
intent.addresses.
|
|
236
|
-
intent.previous_hashes.
|
|
237
|
+
intent.$signatures.length = 0;
|
|
238
|
+
intent.addresses.length = 0;
|
|
239
|
+
intent.previous_hashes.length = 0;
|
|
237
240
|
return intent;
|
|
238
241
|
}
|
|
239
242
|
async function assertSignedPublicationIntent(unsigned, evidence, signerAddress) {
|
|
@@ -296,11 +299,12 @@ async function assertPublicationRecord(record2, intent, prepared) {
|
|
|
296
299
|
if (requiresInclusion !== (record2.inclusion !== void 0)) {
|
|
297
300
|
throw new Error(`Publication journal ${record2.phase} record has invalid inclusion evidence`);
|
|
298
301
|
}
|
|
299
|
-
if (record2.inclusion
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
302
|
+
if (record2.inclusion === void 0) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
validateInclusion(record2.inclusion, record2.phase);
|
|
306
|
+
if (record2.inclusion.transactionHash !== record2.evidence.transactionHash) {
|
|
307
|
+
throw new Error("Publication journal inclusion does not identify the signed transaction");
|
|
304
308
|
}
|
|
305
309
|
}
|
|
306
310
|
async function defaultWait(delayMs) {
|
|
@@ -533,8 +537,7 @@ function sdkChainId(network) {
|
|
|
533
537
|
}
|
|
534
538
|
function publicNetworkForChain(chainId) {
|
|
535
539
|
if (chainId === sdkChainId(MainNetwork)) return "mainnet";
|
|
536
|
-
|
|
537
|
-
return void 0;
|
|
540
|
+
return chainId === sdkChainId(SequenceNetwork) ? "sequence" : void 0;
|
|
538
541
|
}
|
|
539
542
|
function assertResolutionChain(resolution, chainId) {
|
|
540
543
|
const publicNetwork = publicNetworkForChain(chainId);
|
|
@@ -658,8 +661,7 @@ async function publishPublisherService(options) {
|
|
|
658
661
|
}
|
|
659
662
|
const orderedKeys = service.encryptionKeys.map((hash) => {
|
|
660
663
|
const key = keysByHash.get(hash);
|
|
661
|
-
|
|
662
|
-
return { hash, key };
|
|
664
|
+
return key === void 0 ? failBinding(`missing encryption key descriptor ${hash}`) : { hash, key };
|
|
663
665
|
});
|
|
664
666
|
return await publishHandshakeObjects(
|
|
665
667
|
transport,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/finalizedHeadSource.ts", "../../src/finalizedStatementPublication.ts", "../../src/memoryFinalizedStatementPublicationJournal.ts", "../../src/handshakePublication.ts", "../../src/networkSession.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Structural shape shared by the publisher's `FinalizedHeadSource` and the\n * receiver's `TrustedFinalizedHeadSource`. Declared here so this adapter depends\n * on neither package.\n */\nexport interface FinalizedHeadReader {\n headNumber: () => Promise<number>\n}\n\n/** The slice of the XL1 viewer this adapter reads. */\nexport interface Xl1FinalizationViewer {\n readonly finalization: { headNumber: () => Promise<number> }\n}\n\nexport interface Xl1FinalizedHeadSourceOptions {\n /**\n * Reject a head lower than one already observed.\n *\n * Finalized heights are immutable, so a regression means the endpoint was\n * rolled back, swapped, or is lying. Defaults to `true`: admission and cursor\n * decisions both treat this value as trusted, and failing closed is safer than\n * admitting against a rewound view.\n */\n readonly rejectRegression?: boolean\n readonly viewer: Xl1FinalizationViewer\n}\n\n/**\n * Reads the finalized XL1 head for publisher filters and receiver grant\n * freshness.\n *\n * The value is validated rather than forwarded: D-002 requires nonnegative JSON\n * safe integers for every head input, and a non-conforming reading is rejected\n * here instead of surfacing later as an opaque `grant-view-invalid`.\n */\nexport function createXl1FinalizedHeadSource(\n options: Xl1FinalizedHeadSourceOptions,\n): FinalizedHeadReader {\n const rejectRegression = options.rejectRegression ?? true\n let highest = -1\n\n return {\n async headNumber(): Promise<number> {\n const head = await options.viewer.finalization.headNumber()\n if (typeof head !== 'number' || !Number.isSafeInteger(head) || head < 0) {\n throw new TypeError(`XL1 finalized head must be a nonnegative safe integer, received ${String(head)}`)\n }\n if (rejectRegression && head < highest) {\n throw new RangeError(`XL1 finalized head regressed from ${highest} to ${head}`)\n }\n if (head > highest) highest = head\n return head\n },\n }\n}\n", "import {\n WakeSubscriptionAcceptanceSchema,\n WakeSubscriptionAcceptanceZod,\n} from '@xyo-network/event-kit-schemas'\nimport type { Payload } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport type {\n BlockViewer,\n DataLakeRunner,\n DataLakeViewer,\n SignedXl1TransactionEvidence,\n TransactionInclusion,\n TransactionOptions,\n UnsignedHydratedTransaction,\n Xl1TransactionBuildViewer,\n Xl1TransactionSigner,\n XyoRunner,\n} from '@xyo-network/xl1-sdk'\nimport {\n broadcastXl1Transaction,\n buildXl1Transaction,\n createSignedXl1TransactionEvidence,\n observeXl1TransactionFinality,\n observeXl1TransactionInclusion,\n signXl1Transaction,\n verifyXl1TransactionContent,\n writeXl1TransactionContent,\n} from '@xyo-network/xl1-sdk'\nimport type { PreparedStatements, StatementToPublish } from '@xyo-network/xl1-statement-graph-sdk'\nimport { insertVerified, prepareStatements } from '@xyo-network/xl1-statement-graph-sdk'\n\nexport { createMemoryFinalizedStatementPublicationJournal } from './memoryFinalizedStatementPublicationJournal.ts'\n\nexport type FinalizedStatementPublicationPhase\n = | 'broadcast' | 'content-verified' | 'content-written'\n | 'finalized' | 'included' | 'signed'\n\nexport interface FinalizedStatementPublicationRecord {\n readonly attachmentHashes: readonly string[]\n readonly chainId: string\n readonly eventHashes: readonly string[]\n readonly evidence: SignedXl1TransactionEvidence\n readonly inclusion?: TransactionInclusion\n readonly operationId: string\n readonly phase: FinalizedStatementPublicationPhase\n readonly source: string\n}\n\nexport interface FinalizedStatementPublicationIntent {\n readonly attachmentHashes: readonly string[]\n readonly chainId: string\n readonly eventHashes: readonly string[]\n readonly operationId: string\n readonly source: string\n}\n\nexport interface FinalizedStatementPublicationJournal {\n /** Loads the highest durable phase; save must durably commit before resolving. */\n load(intent: FinalizedStatementPublicationIntent): Promise<FinalizedStatementPublicationRecord | undefined>\n save(record: FinalizedStatementPublicationRecord): Promise<void>\n}\n\nexport interface FinalizedStatementPublicationPolling {\n readonly attempts?: number\n readonly delayMs?: number\n readonly wait?: (delayMs: number) => Promise<void>\n}\n\nexport interface FinalizedStatementPublicationOptions {\n /** Exact challenge/response bodies referenced by claimed wake-subscription acceptances. */\n readonly attachments?: readonly Payload[]\n readonly bodyReader: Pick<DataLakeViewer, 'get'>\n readonly bodyWriter: Pick<DataLakeRunner, 'insert'>\n readonly broadcast?: TransactionOptions\n readonly expectedChainId?: string\n readonly expectedSource?: string\n readonly journal: FinalizedStatementPublicationJournal\n /** A source may never reuse this id for a different ordered event/attachment intent. */\n readonly operationId: string\n readonly polling?: FinalizedStatementPublicationPolling\n readonly runner: Pick<XyoRunner, 'broadcastTransaction'>\n readonly signer: Xl1TransactionSigner\n readonly statements: readonly StatementToPublish[]\n readonly viewer: Xl1TransactionBuildViewer & {\n readonly block: Pick<BlockViewer, 'blockByHash' | 'blockByTransactionHash'>\n }\n}\n\nexport interface FinalizedStatementPublicationResult {\n readonly attachmentHashes: readonly string[]\n readonly eventHashes: readonly string[]\n readonly evidence: SignedXl1TransactionEvidence\n readonly finalizedBlock: number\n readonly inclusion: TransactionInclusion\n readonly transactionHash: string\n}\n\nfunction positiveInteger(value: number | undefined, fallback: number, name: string): number {\n const selected = value ?? fallback\n if (!Number.isSafeInteger(selected) || selected < 1) throw new TypeError(`${name} must be a positive safe integer`)\n return selected\n}\n\nfunction nonnegativeInteger(value: number | undefined, fallback: number, name: string): number {\n const selected = value ?? fallback\n if (!Number.isSafeInteger(selected) || selected < 0) throw new TypeError(`${name} must be a nonnegative safe integer`)\n return selected\n}\n\nfunction safeBlockNumber(value: unknown, name: string): number {\n if (typeof value === 'bigint') {\n if (value < 0n || value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new TypeError(`${name} must be a nonnegative safe integer`)\n }\n return Number(value)\n }\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {\n throw new TypeError(`${name} must be a nonnegative safe integer`)\n }\n return value\n}\n\nfunction validateInclusion(inclusion: TransactionInclusion, name: string): number {\n const blockNumber = safeBlockNumber(inclusion.blockNumber, `${name}.blockNumber`)\n if (!Number.isSafeInteger(inclusion.transactionIndex) || inclusion.transactionIndex < 0) {\n throw new TypeError(`${name}.transactionIndex must be a nonnegative safe integer`)\n }\n return blockNumber\n}\n\nfunction assertSameInclusion(\n inclusion: TransactionInclusion,\n inclusionBlock: number,\n finalized: TransactionInclusion,\n finalizedBlock: number,\n): void {\n if (\n finalized.blockHash !== inclusion.blockHash\n || finalizedBlock !== inclusionBlock\n || finalized.transactionHash !== inclusion.transactionHash\n || finalized.transactionIndex !== inclusion.transactionIndex\n ) {\n throw new Error('Finality evidence does not match the observed transaction inclusion')\n }\n}\n\nfunction sameStrings(left: readonly string[], right: readonly string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index])\n}\n\nconst PublicationPhases = [\n 'signed',\n 'content-written',\n 'content-verified',\n 'broadcast',\n 'included',\n 'finalized',\n] as const satisfies readonly FinalizedStatementPublicationPhase[]\n\nconst PublicationPhaseSet = new Set<FinalizedStatementPublicationPhase>(PublicationPhases)\n\nfunction publicationOperationId(value: string): string {\n if (typeof value !== 'string' || value.length === 0 || value.length > 256) {\n throw new TypeError('operationId must be a nonempty string of at most 256 characters')\n }\n return value\n}\n\nfunction sameValue(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left)\n && Array.isArray(right)\n && left.length === right.length\n && left.every((value, index) => sameValue(value, right[index]))\n }\n if (typeof left !== 'object' || left === null || typeof right !== 'object' || right === null) return false\n const leftRecord = left as Record<string, unknown>\n const rightRecord = right as Record<string, unknown>\n const leftKeys = Object.keys(leftRecord).sort()\n const rightKeys = Object.keys(rightRecord).sort()\n return sameStrings(leftKeys, rightKeys)\n && leftKeys.every(key => sameValue(leftRecord[key], rightRecord[key]))\n}\n\nfunction sameIntent(\n left: FinalizedStatementPublicationIntent,\n right: FinalizedStatementPublicationIntent,\n): boolean {\n return left.operationId === right.operationId\n && left.source === right.source\n && left.chainId === right.chainId\n && sameStrings(left.eventHashes, right.eventHashes)\n && sameStrings(left.attachmentHashes, right.attachmentHashes)\n}\n\nfunction intentFromRecord(record: FinalizedStatementPublicationRecord): FinalizedStatementPublicationIntent {\n return {\n attachmentHashes: record.attachmentHashes,\n chainId: record.chainId,\n eventHashes: record.eventHashes,\n operationId: record.operationId,\n source: record.source,\n }\n}\n\nfunction acceptanceAttachmentHashes(statements: readonly StatementToPublish[]): Set<string> {\n const hashes = new Set<string>()\n for (const statement of statements) {\n for (const object of statement.objects) {\n if (object.schema !== WakeSubscriptionAcceptanceSchema) continue\n const acceptance = WakeSubscriptionAcceptanceZod.safeParse(object)\n if (!acceptance.success) throw new TypeError('Claimed wake subscription acceptance is malformed')\n hashes.add(acceptance.data.challenge)\n hashes.add(acceptance.data.response)\n }\n }\n return hashes\n}\n\nasync function assertExactAcceptanceAttachments(\n statements: readonly StatementToPublish[],\n attachments: readonly Payload[],\n): Promise<readonly string[]> {\n const missing = acceptanceAttachmentHashes(statements)\n const supplied = new Set<string>()\n const hashes: string[] = []\n for (const attachment of attachments) {\n const hash = String(await PayloadBuilder.dataHash(attachment))\n if (supplied.has(hash)) {\n throw new Error(`Duplicate publication attachment ${hash}`)\n }\n if (!missing.delete(hash)) {\n throw new Error(`Publication attachment ${hash} is not referenced by a wake subscription acceptance`)\n }\n supplied.add(hash)\n hashes.push(hash)\n }\n if (missing.size > 0) {\n throw new Error(`Wake subscription acceptance is missing publication attachment ${[...missing].join(', ')}`)\n }\n return hashes\n}\n\nfunction signingIntent<\n T extends UnsignedHydratedTransaction[0] | SignedXl1TransactionEvidence['transaction'][0],\n>(transaction: T): T {\n const intent = structuredClone(transaction)\n intent.$signatures.splice(0)\n intent.addresses.splice(0)\n intent.previous_hashes.splice(0)\n return intent\n}\n\nasync function assertSignedPublicationIntent(\n unsigned: UnsignedHydratedTransaction,\n evidence: SignedXl1TransactionEvidence,\n signerAddress: string,\n): Promise<void> {\n const signed = evidence.transaction\n if (String(evidence.from) !== signerAddress || String(signed[0].from) !== signerAddress) {\n throw new Error('Signed transaction from address does not match the requested signer')\n }\n if (signed[0].addresses.length !== 1 || String(signed[0].addresses[0]) !== signerAddress) {\n throw new Error('Signed transaction witness does not contain exactly the requested signer')\n }\n\n const [unsignedIntentHash, signedIntentHash, unsignedPayloadHashes, signedPayloadHashes] = await Promise.all([\n PayloadBuilder.hash(signingIntent(unsigned[0])),\n PayloadBuilder.hash(signingIntent(signed[0])),\n PayloadBuilder.hashes([...unsigned[1]]),\n PayloadBuilder.hashes([...signed[1]]),\n ])\n if (unsignedIntentHash !== signedIntentHash || !sameStrings(unsignedPayloadHashes, signedPayloadHashes)) {\n throw new Error('Signed transaction content differs from the transaction submitted for signing')\n }\n}\n\nasync function assertPreparedPublicationIntent(\n prepared: PreparedStatements,\n evidence: SignedXl1TransactionEvidence,\n intent: FinalizedStatementPublicationIntent,\n): Promise<void> {\n const signed = evidence.transaction\n if (String(evidence.from) !== intent.source || String(signed[0].from) !== intent.source) {\n throw new Error('Signed transaction from address does not match the requested signer')\n }\n if (signed[0].addresses.length !== 1 || String(signed[0].addresses[0]) !== intent.source) {\n throw new Error('Signed transaction witness does not contain exactly the requested signer')\n }\n if (String(evidence.chainId) !== intent.chainId || String(signed[0].chain) !== intent.chainId) {\n throw new Error('Signed transaction chain does not match the requested publication chain')\n }\n\n const [expectedPayloadHashes, signedPayloadHashes, elevatedHashes] = await Promise.all([\n PayloadBuilder.hashes([...prepared.transactionPayloads]),\n PayloadBuilder.hashes([...signed[1]]),\n PayloadBuilder.hashes([...prepared.onChainPayloads]),\n ])\n const expectedSchemas = prepared.transactionPayloads.map(payload => String(payload.schema))\n const expectedScript = elevatedHashes.map(hash => `elevate|${hash}`)\n if (\n !sameStrings(expectedPayloadHashes, signedPayloadHashes)\n || !sameStrings(expectedPayloadHashes, signed[0].payload_hashes)\n || !sameStrings(expectedSchemas, signed[0].payload_schemas)\n || !sameStrings(expectedScript, signed[0].script ?? [])\n ) {\n throw new Error('Signed transaction content differs from the requested publication intent')\n }\n}\n\nasync function assertResumableEvidence(\n evidence: SignedXl1TransactionEvidence,\n): Promise<void> {\n const reconstructed = await createSignedXl1TransactionEvidence(evidence.transaction)\n if (!sameValue(reconstructed, evidence)) {\n throw new Error('Publication journal evidence does not match its signed transaction')\n }\n}\n\nasync function assertPublicationRecord(\n record: FinalizedStatementPublicationRecord,\n intent: FinalizedStatementPublicationIntent,\n prepared: PreparedStatements,\n): Promise<void> {\n if (typeof record !== 'object' || record === null) {\n throw new Error('Publication journal returned a malformed record')\n }\n if (!PublicationPhaseSet.has(record.phase)) throw new Error('Publication journal returned an unknown phase')\n if (!sameIntent(intentFromRecord(record), intent)) {\n throw new Error('Publication journal returned a different publication intent')\n }\n await assertResumableEvidence(record.evidence)\n await assertPreparedPublicationIntent(prepared, record.evidence, intent)\n\n const requiresInclusion = record.phase === 'included' || record.phase === 'finalized'\n if (requiresInclusion !== (record.inclusion !== undefined)) {\n throw new Error(`Publication journal ${record.phase} record has invalid inclusion evidence`)\n }\n if (record.inclusion !== undefined) {\n validateInclusion(record.inclusion, record.phase)\n if (record.inclusion.transactionHash !== record.evidence.transactionHash) {\n throw new Error('Publication journal inclusion does not identify the signed transaction')\n }\n }\n}\n\nasync function defaultWait(delayMs: number): Promise<void> {\n await new Promise<void>(resolve => setTimeout(resolve, delayMs))\n}\n\nasync function poll<T>(\n operation: () => Promise<T | null>,\n options: FinalizedStatementPublicationPolling | undefined,\n label: string,\n): Promise<T> {\n const attempts = positiveInteger(options?.attempts, 120, 'polling.attempts')\n const delayMs = nonnegativeInteger(options?.delayMs, 500, 'polling.delayMs')\n const wait = options?.wait ?? defaultWait\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n const result = await operation()\n if (result !== null) return result\n if (attempt < attempts) await wait(delayMs)\n }\n throw new Error(`${label} was not observed after ${attempts} attempts`)\n}\n\nasync function record(\n journal: FinalizedStatementPublicationJournal,\n phase: FinalizedStatementPublicationPhase,\n evidence: SignedXl1TransactionEvidence,\n intent: FinalizedStatementPublicationIntent,\n inclusion?: TransactionInclusion,\n): Promise<FinalizedStatementPublicationRecord> {\n const result = {\n ...intent,\n evidence,\n ...(inclusion === undefined ? {} : { inclusion }),\n phase,\n }\n await journal.save(result)\n return result\n}\n\nfunction finalizedResult(record: FinalizedStatementPublicationRecord): FinalizedStatementPublicationResult {\n if (record.phase !== 'finalized' || record.inclusion === undefined) {\n throw new Error('Cannot construct finalized publication result from an incomplete record')\n }\n const finalizedBlock = validateInclusion(record.inclusion, 'finality')\n if (record.inclusion.transactionHash !== record.evidence.transactionHash) throw new Error('Inclusion does not identify signed publication')\n return {\n attachmentHashes: record.attachmentHashes,\n eventHashes: record.eventHashes,\n evidence: record.evidence,\n finalizedBlock,\n inclusion: record.inclusion,\n transactionHash: record.evidence.transactionHash,\n }\n}\n\nasync function bindSignedPublication(\n options: FinalizedStatementPublicationOptions,\n prepared: PreparedStatements,\n intent: FinalizedStatementPublicationIntent,\n): Promise<FinalizedStatementPublicationRecord> {\n const pinnedSigner: Xl1TransactionSigner = {\n address: () => intent.source as never,\n signTransaction: transaction => options.signer.signTransaction(transaction),\n }\n const pinnedViewer: Xl1TransactionBuildViewer = {\n chainId: () => intent.chainId as never,\n currentBlockNumber: () => options.viewer.currentBlockNumber(),\n }\n const unsigned = await buildXl1Transaction(\n pinnedViewer,\n pinnedSigner,\n // Statement Graph 0.5 guarantees this partition contains only the Claim\n // events from StatementToPublish. Its published PreparedStatements type is\n // broader (`Payload[]`) than that runtime contract, while XL1 correctly\n // requires the narrower elevated-payload union.\n prepared.onChainPayloads as StatementToPublish['event'][],\n prepared.offChainPayloads,\n options.broadcast,\n )\n const evidence = await signXl1Transaction(pinnedSigner, unsigned)\n await assertSignedPublicationIntent(unsigned, evidence, intent.source)\n await assertPreparedPublicationIntent(prepared, evidence, intent)\n return await record(options.journal, 'signed', evidence, intent)\n}\n\nasync function exactPublicationInclusion(\n options: FinalizedStatementPublicationOptions,\n evidence: SignedXl1TransactionEvidence,\n): Promise<TransactionInclusion | null> {\n const inclusion = await observeXl1TransactionInclusion(options.viewer.block, evidence.transactionHash)\n if (inclusion === null) return null\n validateInclusion(inclusion, 'inclusion')\n if (inclusion.transactionHash !== evidence.transactionHash) throw new Error('Inclusion does not identify signed publication')\n return inclusion\n}\n\nasync function advanceBroadcast(\n options: FinalizedStatementPublicationOptions,\n intent: FinalizedStatementPublicationIntent,\n publication: FinalizedStatementPublicationRecord,\n resumed: boolean,\n): Promise<FinalizedStatementPublicationRecord> {\n const evidence = publication.evidence\n if (resumed) {\n const inclusion = await exactPublicationInclusion(options, evidence)\n if (inclusion !== null) return await record(options.journal, 'included', evidence, intent, inclusion)\n }\n try {\n await broadcastXl1Transaction(options.runner, evidence)\n } catch (error) {\n if (!resumed) throw error\n const inclusion = await exactPublicationInclusion(options, evidence)\n if (inclusion === null) throw error\n return await record(options.journal, 'included', evidence, intent, inclusion)\n }\n return publication.phase === 'content-verified'\n ? await record(options.journal, 'broadcast', evidence, intent)\n : publication\n}\n\nasync function completePublication(\n options: FinalizedStatementPublicationOptions,\n intent: FinalizedStatementPublicationIntent,\n initial: FinalizedStatementPublicationRecord,\n resumedFromBroadcastBoundary: boolean,\n): Promise<FinalizedStatementPublicationRecord> {\n let publication = initial\n const evidence = publication.evidence\n if (publication.phase === 'signed') {\n await writeXl1TransactionContent(options.bodyWriter, evidence)\n publication = await record(options.journal, 'content-written', evidence, intent)\n }\n if (publication.phase === 'content-written') {\n await verifyXl1TransactionContent(options.bodyReader, evidence)\n publication = await record(options.journal, 'content-verified', evidence, intent)\n }\n if (publication.phase === 'content-verified' || publication.phase === 'broadcast') {\n publication = await advanceBroadcast(options, intent, publication, resumedFromBroadcastBoundary)\n }\n if (publication.phase === 'broadcast') {\n const inclusion = await poll(\n async () => await observeXl1TransactionInclusion(options.viewer.block, evidence.transactionHash),\n options.polling,\n `transaction ${evidence.transactionHash} inclusion`,\n )\n validateInclusion(inclusion, 'inclusion')\n if (inclusion.transactionHash !== evidence.transactionHash) throw new Error('Inclusion does not identify signed publication')\n publication = await record(options.journal, 'included', evidence, intent, inclusion)\n }\n if (publication.phase === 'included') {\n const inclusion = publication.inclusion\n if (inclusion === undefined) throw new Error('Included publication is missing inclusion evidence')\n const inclusionBlock = validateInclusion(inclusion, 'inclusion')\n const finalized = await poll(\n async () => await observeXl1TransactionFinality(options.viewer.block, inclusion),\n options.polling,\n `transaction ${evidence.transactionHash} finality`,\n )\n const finalizedBlock = validateInclusion(finalized, 'finality')\n assertSameInclusion(inclusion, inclusionBlock, finalized, finalizedBlock)\n publication = await record(options.journal, 'finalized', evidence, intent, finalized)\n }\n return publication\n}\n\n/**\n * Publishes one Statement Graph transaction through explicit crash boundaries:\n * prepare/sign, write all exact content, independently read it back, broadcast,\n * observe inclusion, and independently recheck finality.\n */\nexport async function publishFinalizedStatements(\n options: FinalizedStatementPublicationOptions,\n): Promise<FinalizedStatementPublicationResult> {\n const chainId = String(await options.viewer.chainId())\n if (options.expectedChainId !== undefined && chainId !== options.expectedChainId) {\n throw new Error('XL1 viewer chain does not match the expected publication chain')\n }\n const signerAddress = String(await options.signer.address())\n if (options.expectedSource !== undefined && signerAddress !== options.expectedSource) {\n throw new Error('XL1 signer does not match the expected publication source')\n }\n const prepared = await prepareStatements(options.statements, [signerAddress])\n const attachmentHashes = await assertExactAcceptanceAttachments(\n options.statements,\n options.attachments ?? [],\n )\n const intent: FinalizedStatementPublicationIntent = {\n attachmentHashes,\n chainId,\n eventHashes: prepared.eventHashes,\n operationId: publicationOperationId(options.operationId),\n source: signerAddress,\n }\n let publication = await options.journal.load(intent)\n const resumedFromBroadcastBoundary = publication?.phase === 'content-verified' || publication?.phase === 'broadcast'\n if (publication !== undefined) {\n await assertPublicationRecord(publication, intent, prepared)\n if (publication.phase === 'finalized') return finalizedResult(publication)\n }\n\n const verifiedAttachmentHashes = await insertVerified(\n {\n get: async hashes => await options.bodyReader.get(hashes as never),\n insert: async payloads => await options.bodyWriter.insert(payloads as never),\n },\n options.attachments ?? [],\n )\n if (!sameStrings(attachmentHashes, verifiedAttachmentHashes)) {\n throw new Error('Verified publication attachment hashes differ from the supplied attachment bodies')\n }\n\n publication ??= await bindSignedPublication(options, prepared, intent)\n publication = await completePublication(options, intent, publication, resumedFromBroadcastBoundary)\n return finalizedResult(publication)\n}\n", "import type {\n FinalizedStatementPublicationIntent,\n FinalizedStatementPublicationJournal,\n FinalizedStatementPublicationPhase,\n FinalizedStatementPublicationRecord,\n} from './finalizedStatementPublication.ts'\n\nconst PublicationPhases = [\n 'signed',\n 'content-written',\n 'content-verified',\n 'broadcast',\n 'included',\n 'finalized',\n] as const satisfies readonly FinalizedStatementPublicationPhase[]\n\nfunction sameStrings(left: readonly string[], right: readonly string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index])\n}\n\nfunction sameValue(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left)\n && Array.isArray(right)\n && left.length === right.length\n && left.every((value, index) => sameValue(value, right[index]))\n }\n if (typeof left !== 'object' || left === null || typeof right !== 'object' || right === null) return false\n const leftRecord = left as Record<string, unknown>\n const rightRecord = right as Record<string, unknown>\n const leftKeys = Object.keys(leftRecord).sort()\n const rightKeys = Object.keys(rightRecord).sort()\n return sameStrings(leftKeys, rightKeys)\n && leftKeys.every(key => sameValue(leftRecord[key], rightRecord[key]))\n}\n\nfunction sameIntent(\n left: FinalizedStatementPublicationIntent,\n right: FinalizedStatementPublicationIntent,\n): boolean {\n return left.operationId === right.operationId\n && left.source === right.source\n && left.chainId === right.chainId\n && sameStrings(left.eventHashes, right.eventHashes)\n && sameStrings(left.attachmentHashes, right.attachmentHashes)\n}\n\nfunction publicationKey(intent: FinalizedStatementPublicationIntent): string {\n return `${intent.chainId}\\u0000${intent.source}\\u0000${intent.operationId}`\n}\n\nfunction intentFromRecord(record: FinalizedStatementPublicationRecord): FinalizedStatementPublicationIntent {\n return {\n attachmentHashes: record.attachmentHashes,\n chainId: record.chainId,\n eventHashes: record.eventHashes,\n operationId: record.operationId,\n source: record.source,\n }\n}\n\nexport function createMemoryFinalizedStatementPublicationJournal(): FinalizedStatementPublicationJournal & {\n readonly records: readonly FinalizedStatementPublicationRecord[]\n} {\n const records: FinalizedStatementPublicationRecord[] = []\n const publications = new Map<string, Map<FinalizedStatementPublicationPhase, FinalizedStatementPublicationRecord>>()\n\n function phasesForExactIntent(intent: FinalizedStatementPublicationIntent) {\n const phases = publications.get(publicationKey(intent))\n const signed = phases?.get('signed')\n if (signed !== undefined && !sameIntent(intentFromRecord(signed), intent)) {\n throw new Error('publication journal intent collision')\n }\n return phases\n }\n\n return {\n records,\n async load(intent): Promise<FinalizedStatementPublicationRecord | undefined> {\n const phases = phasesForExactIntent(intent)\n if (phases === undefined) return undefined\n for (const phase of PublicationPhases.toReversed()) {\n const candidate = phases.get(phase)\n if (candidate !== undefined) return structuredClone(candidate)\n }\n throw new Error('publication journal has an intent without signed evidence')\n },\n async save(record): Promise<void> {\n let phases = phasesForExactIntent(record)\n if (phases === undefined) {\n if (record.phase !== 'signed') throw new Error('publication journal must bind signed evidence first')\n phases = new Map()\n publications.set(publicationKey(record), phases)\n }\n const signed = phases.get('signed')\n if (signed !== undefined && !sameValue(signed.evidence, record.evidence)) {\n throw new Error('publication journal evidence collision')\n }\n const existing = phases.get(record.phase)\n if (existing !== undefined) {\n if (!sameValue(existing, record)) throw new Error(`publication journal collision at ${record.phase}`)\n return\n }\n const durable = structuredClone(record)\n phases.set(record.phase, durable)\n records.push(structuredClone(durable))\n },\n }\n}\n", "import type {\n EncryptedWakeSubscription,\n EndpointChallenge,\n EndpointChallengeResponse,\n PublisherEncryptionKey,\n PublisherEncryptionKeyRevocation,\n PublisherService,\n PublisherServiceRevocation,\n WakeGrantObject,\n WakeGrantRevocation,\n WakeSubscriptionAcceptance,\n WakeSubscriptionAcceptanceRevocation,\n WakeSubscriptionRevocation,\n} from '@xyo-network/event-kit-schemas'\nimport {\n EncryptedWakeSubscriptionZod,\n EndpointChallengeResponseZod,\n EndpointChallengeZod,\n hasMatchingHandshakeProfile,\n normalizeAddress,\n NormalizedAddressZod,\n PublisherEncryptionKeyRevocationZod,\n PublisherEncryptionKeyZod,\n PublisherServiceRevocationZod,\n PublisherServiceZod,\n WakeGrantObjectZod,\n WakeGrantRevocationZod,\n WakeSubscriptionAcceptanceRevocationZod,\n WakeSubscriptionAcceptanceZod,\n WakeSubscriptionRevocationZod,\n} from '@xyo-network/event-kit-schemas'\nimport type { Payload } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport type { StatementToPublish } from '@xyo-network/xl1-statement-graph-sdk'\nimport { buildClaim } from '@xyo-network/xl1-statement-graph-sdk'\n\nimport type {\n FinalizedStatementPublicationOptions,\n FinalizedStatementPublicationResult,\n} from './finalizedStatementPublication.ts'\nimport { publishFinalizedStatements } from './finalizedStatementPublication.ts'\nimport type { EventKitNetworkSession } from './networkSession.ts'\nimport { assertEventKitNetworkWrite } from './networkSession.ts'\n\nexport type HandshakePublicationTransport = Omit<\n FinalizedStatementPublicationOptions,\n 'attachments' | 'expectedChainId' | 'expectedSource' | 'operationId' | 'statements'\n> & {\n readonly session: EventKitNetworkSession\n}\n\ntype HandshakePublicationOperationTransport = HandshakePublicationTransport & Pick<\n FinalizedStatementPublicationOptions,\n 'operationId'\n>\n\ninterface PublishedObjectIdentityBase {\n readonly objectHash: string\n readonly schema: string\n}\n\nexport type PublishedHandshakeObjectIdentity\n = | PublishedObjectIdentityBase & {\n readonly kind: 'publisher-service'\n readonly revision: number\n readonly serviceId: string\n }\n | PublishedObjectIdentityBase & {\n readonly keyId: string\n readonly kind: 'publisher-encryption-key'\n }\n | PublishedObjectIdentityBase & {\n readonly deploymentId: string\n readonly grantId: string\n readonly kind: 'wake-grant'\n }\n | PublishedObjectIdentityBase & {\n readonly kind: 'wake-subscription'\n readonly revision: number\n readonly subscriptionId: string\n }\n | PublishedObjectIdentityBase & {\n readonly challenge: string\n readonly kind: 'wake-subscription-acceptance'\n readonly response: string\n readonly subscription: string\n }\n | PublishedObjectIdentityBase & {\n readonly kind:\n | 'publisher-encryption-key-revocation'\n | 'publisher-service-revocation'\n | 'wake-grant-revocation'\n | 'wake-subscription-acceptance-revocation'\n | 'wake-subscription-revocation'\n readonly targetHash: string\n }\n\nexport interface HandshakePublicationResult extends FinalizedStatementPublicationResult {\n readonly chainId: EventKitNetworkSession['chainId']\n readonly claim: StatementToPublish['event']\n readonly claimHash: string\n readonly network: EventKitNetworkSession['network']\n readonly objects: readonly PublishedHandshakeObjectIdentity[]\n readonly source: string\n readonly subject: string\n}\n\nexport interface PublishPublisherServiceOptions extends HandshakePublicationOperationTransport {\n /** Every descriptor referenced by service.encryptionKeys, in any order. */\n readonly encryptionKeys: readonly PublisherEncryptionKey[]\n readonly service: PublisherService\n}\n\nexport interface PublishWakeSubscriptionOptions extends HandshakePublicationOperationTransport {\n readonly encryptionKey: PublisherEncryptionKey\n readonly grant: WakeGrantObject\n readonly service: PublisherService\n readonly subscription: EncryptedWakeSubscription\n}\n\nexport interface PublishWakeSubscriptionAcceptanceOptions extends HandshakePublicationOperationTransport {\n readonly acceptance: WakeSubscriptionAcceptance\n readonly challenge: EndpointChallenge\n readonly response: EndpointChallengeResponse\n}\n\nexport interface PublishPublisherServiceRevocationOptions extends HandshakePublicationOperationTransport {\n readonly revocation: PublisherServiceRevocation\n}\n\nexport interface PublishPublisherEncryptionKeyRevocationOptions extends HandshakePublicationOperationTransport {\n readonly revocation: PublisherEncryptionKeyRevocation\n}\n\nexport interface PublishWakeSubscriptionRevocationOptions extends HandshakePublicationOperationTransport {\n readonly publisher: string\n readonly revocation: WakeSubscriptionRevocation\n}\n\nexport interface PublishWakeGrantRevocationOptions extends HandshakePublicationOperationTransport {\n readonly publisher: string\n readonly revocation: WakeGrantRevocation\n}\n\nexport interface PublishWakeSubscriptionAcceptanceRevocationOptions extends HandshakePublicationOperationTransport {\n readonly revocation: WakeSubscriptionAcceptanceRevocation\n}\n\nasync function objectHash(object: Payload): Promise<string> {\n return String(await PayloadBuilder.dataHash(object))\n}\n\nasync function signerSource(options: HandshakePublicationTransport): Promise<string> {\n const raw = String(await options.signer.address())\n const normalized = NormalizedAddressZod.parse(normalizeAddress(raw))\n if (raw !== normalized) {\n throw new TypeError('XL1 signer address must be canonical lowercase hexadecimal without 0x')\n }\n return normalized\n}\n\nfunction failBinding(message: string): never {\n throw new Error(`Invalid Event Kit handshake publication: ${message}`)\n}\n\nasync function publishHandshakeObjects(\n transport: HandshakePublicationOperationTransport,\n source: string,\n subject: string,\n objects: readonly Payload[],\n identities: readonly PublishedHandshakeObjectIdentity[],\n attachments: readonly Payload[] = [],\n): Promise<HandshakePublicationResult> {\n await assertEventKitNetworkWrite(transport.session, transport.viewer)\n if (source !== await signerSource(transport)) failBinding('Claim source does not match the transaction signer')\n const hashes = identities.map(identity => identity.objectHash)\n const claim = buildClaim({\n hashes, source, subject,\n })\n const claimHash = await objectHash(claim)\n const { session: _session, ...publication } = transport\n const result = await publishFinalizedStatements({\n ...publication,\n attachments,\n expectedChainId: transport.session.chainId,\n expectedSource: source,\n statements: [{ event: claim, objects }],\n })\n if (result.eventHashes.length !== 1 || result.eventHashes[0] !== claimHash) {\n throw new Error('Finalized publication evidence does not identify the exact Event Kit Claim')\n }\n return {\n ...result,\n chainId: transport.session.chainId,\n claim,\n claimHash,\n network: transport.session.network,\n objects: identities,\n source,\n subject,\n }\n}\n\n/** Publishes one atomic publisher-authored service revision and all key descriptors it names. */\nexport async function publishPublisherService(\n options: PublishPublisherServiceOptions,\n): Promise<HandshakePublicationResult> {\n const {\n encryptionKeys: rawKeys, service: rawService, ...transport\n } = options\n const service = PublisherServiceZod.parse(rawService)\n if (service.authorizationChainId !== transport.session.chainId) {\n failBinding('service authorizationChainId does not match the pinned session')\n }\n const keys = rawKeys.map(key => PublisherEncryptionKeyZod.parse(key))\n const source = await signerSource(transport)\n const [serviceHash, keyEntries] = await Promise.all([\n objectHash(service),\n Promise.all(keys.map(async key => ({ hash: await objectHash(key), key }))),\n ])\n const keysByHash = new Map(keyEntries.map(entry => [entry.hash, entry.key]))\n if (keysByHash.size !== keyEntries.length) failBinding('encryption key descriptor bodies must be unique')\n if (keysByHash.size !== service.encryptionKeys.length\n || service.encryptionKeys.some(hash => !keysByHash.has(hash))) {\n failBinding('service.encryptionKeys must exactly identify the supplied key descriptors')\n }\n const orderedKeys = service.encryptionKeys.map((hash) => {\n const key = keysByHash.get(hash)\n if (key === undefined) return failBinding(`missing encryption key descriptor ${hash}`)\n return { hash, key }\n })\n return await publishHandshakeObjects(\n transport,\n source,\n source,\n [service, ...orderedKeys.map(entry => entry.key)],\n [\n {\n kind: 'publisher-service',\n objectHash: serviceHash,\n revision: service.revision,\n schema: service.schema,\n serviceId: service.serviceId,\n },\n ...orderedKeys.map(({ hash, key }) => ({\n keyId: key.keyId,\n kind: 'publisher-encryption-key' as const,\n objectHash: hash,\n schema: key.schema,\n })),\n ],\n )\n}\n\n/** Publishes the subscriber's exact service/grant/encrypted-subscription same-Claim fan. */\nexport async function publishWakeSubscription(\n options: PublishWakeSubscriptionOptions,\n): Promise<HandshakePublicationResult> {\n const {\n encryptionKey: rawKey,\n grant: rawGrant,\n service: rawService,\n subscription: rawSubscription,\n ...transport\n } = options\n const key = PublisherEncryptionKeyZod.parse(rawKey)\n const grant = WakeGrantObjectZod.parse(rawGrant)\n const service = PublisherServiceZod.parse(rawService)\n if (service.authorizationChainId !== transport.session.chainId) {\n failBinding('service authorizationChainId does not match the pinned session')\n }\n const subscription = EncryptedWakeSubscriptionZod.parse(rawSubscription)\n if (subscription.chainId !== transport.session.chainId) failBinding('subscription chainId does not match the pinned session')\n if (!hasMatchingHandshakeProfile(service, subscription, transport.session.chainId)) {\n failBinding('service and subscription profiles must match the pinned authorization chain')\n }\n const [keyHash, grantHash, serviceHash, subscriptionHash] = await Promise.all([\n objectHash(key), objectHash(grant), objectHash(service), objectHash(subscription),\n ])\n if (subscription.publisher !== grant.publisher) failBinding('subscription publisher does not match grant.publisher')\n if (subscription.service !== serviceHash) failBinding('subscription service does not match the supplied service')\n if (subscription.grant !== grantHash) failBinding('subscription grant does not match the supplied grant')\n if (subscription.encryptionKey !== keyHash || subscription.keyId !== key.keyId) {\n failBinding('subscription encryption key does not match the supplied descriptor')\n }\n if (service.preferredEncryptionKey !== keyHash || !service.encryptionKeys.includes(keyHash)) {\n failBinding('subscription must use the selected service preferred encryption key')\n }\n const source = await signerSource(transport)\n const subject = NormalizedAddressZod.parse(subscription.publisher)\n return await publishHandshakeObjects(\n transport,\n source,\n subject,\n [service, grant, subscription],\n [\n {\n kind: 'publisher-service',\n objectHash: serviceHash,\n revision: service.revision,\n schema: service.schema,\n serviceId: service.serviceId,\n },\n {\n deploymentId: grant.deploymentId,\n grantId: grant.grantId,\n kind: 'wake-grant',\n objectHash: grantHash,\n schema: grant.schema,\n },\n {\n kind: 'wake-subscription',\n objectHash: subscriptionHash,\n revision: subscription.revision,\n schema: subscription.schema,\n subscriptionId: subscription.subscriptionId,\n },\n ],\n )\n}\n\n/** Publishes publisher acceptance and retains the exact successful challenge/response bodies first. */\nexport async function publishWakeSubscriptionAcceptance(\n options: PublishWakeSubscriptionAcceptanceOptions,\n): Promise<HandshakePublicationResult> {\n const {\n acceptance: rawAcceptance, challenge: rawChallenge, response: rawResponse, ...transport\n } = options\n const acceptance = WakeSubscriptionAcceptanceZod.parse(rawAcceptance)\n const challenge = EndpointChallengeZod.parse(rawChallenge)\n const response = EndpointChallengeResponseZod.parse(rawResponse)\n const [acceptanceHash, challengeHash, responseHash] = await Promise.all([\n objectHash(acceptance), objectHash(challenge), objectHash(response),\n ])\n const source = await signerSource(transport)\n if (challenge.publisher !== source) failBinding('challenge publisher does not match the transaction signer')\n if (challenge.chainId !== transport.session.chainId) failBinding('challenge chainId does not match the pinned session')\n if (response.challenge !== challengeHash) failBinding('response does not reference the supplied challenge')\n if (acceptance.challenge !== challengeHash || acceptance.response !== responseHash) {\n failBinding('acceptance does not reference the supplied challenge and response')\n }\n if (acceptance.service !== challenge.service\n || acceptance.encryptionKey !== challenge.encryptionKey\n || acceptance.subscription !== challenge.subscription\n || acceptance.grant !== challenge.grant) {\n failBinding('acceptance tuple does not match the supplied challenge')\n }\n return await publishHandshakeObjects(\n transport,\n source,\n source,\n [acceptance],\n [{\n challenge: challengeHash,\n kind: 'wake-subscription-acceptance',\n objectHash: acceptanceHash,\n response: responseHash,\n schema: acceptance.schema,\n subscription: acceptance.subscription,\n }],\n [challenge, response],\n )\n}\n\nasync function publishRevocation(\n transport: HandshakePublicationOperationTransport,\n publisher: string,\n revocation: Payload,\n kind: Extract<PublishedHandshakeObjectIdentity, { readonly targetHash: string }>['kind'],\n targetHash: string,\n): Promise<HandshakePublicationResult> {\n const source = await signerSource(transport)\n const subject = NormalizedAddressZod.parse(publisher)\n const revocationHash = await objectHash(revocation)\n return await publishHandshakeObjects(\n transport,\n source,\n subject,\n [revocation],\n [{\n kind, objectHash: revocationHash, schema: String(revocation.schema), targetHash,\n }],\n )\n}\n\nexport async function publishPublisherServiceRevocation(\n options: PublishPublisherServiceRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const { revocation: rawRevocation, ...transport } = options\n const revocation = PublisherServiceRevocationZod.parse(rawRevocation)\n const publisher = await signerSource(transport)\n return await publishRevocation(transport, publisher, revocation, 'publisher-service-revocation', revocation.service)\n}\n\nexport async function publishPublisherEncryptionKeyRevocation(\n options: PublishPublisherEncryptionKeyRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const { revocation: rawRevocation, ...transport } = options\n const revocation = PublisherEncryptionKeyRevocationZod.parse(rawRevocation)\n const publisher = await signerSource(transport)\n return await publishRevocation(\n transport,\n publisher,\n revocation,\n 'publisher-encryption-key-revocation',\n revocation.key,\n )\n}\n\nexport async function publishWakeSubscriptionRevocation(\n options: PublishWakeSubscriptionRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const {\n publisher, revocation: rawRevocation, ...transport\n } = options\n const revocation = WakeSubscriptionRevocationZod.parse(rawRevocation)\n return await publishRevocation(\n transport,\n publisher,\n revocation,\n 'wake-subscription-revocation',\n revocation.subscription,\n )\n}\n\nexport async function publishWakeGrantRevocation(\n options: PublishWakeGrantRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const {\n publisher, revocation: rawRevocation, ...transport\n } = options\n const revocation = WakeGrantRevocationZod.parse(rawRevocation)\n return await publishRevocation(transport, publisher, revocation, 'wake-grant-revocation', revocation.grant)\n}\n\nexport async function publishWakeSubscriptionAcceptanceRevocation(\n options: PublishWakeSubscriptionAcceptanceRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const { revocation: rawRevocation, ...transport } = options\n const revocation = WakeSubscriptionAcceptanceRevocationZod.parse(rawRevocation)\n const publisher = await signerSource(transport)\n return await publishRevocation(\n transport,\n publisher,\n revocation,\n 'wake-subscription-acceptance-revocation',\n revocation.acceptance,\n )\n}\n", "import { ChainIdZod } from '@xyo-network/event-kit-schemas'\nimport type { NetworkBootstrap } from '@xyo-network/xl1-sdk'\nimport {\n DefaultNetworks,\n MainNetwork,\n NetworkDataLakeUrls,\n SequenceNetwork,\n} from '@xyo-network/xl1-sdk'\n\nexport const EVENT_KIT_NETWORK_IDS = ['local', 'sequence', 'mainnet'] as const\nexport type EventKitNetworkId = typeof EVENT_KIT_NETWORK_IDS[number]\n\nexport interface EventKitChainIdViewer {\n chainId(): unknown\n}\n\nexport interface EventKitNetworkResolution {\n readonly dataLakeUrl: string\n /** Static SDK chain identity. Local chains acquire their identity from the connected viewer. */\n readonly expectedChainId?: string\n readonly network: EventKitNetworkId\n readonly rpcUrl: string\n}\n\nexport interface ResolveEventKitNetworkOptions {\n readonly dataLakeUrl?: string\n readonly network: EventKitNetworkId\n readonly rpcUrl?: string\n}\n\nexport interface PinEventKitNetworkSessionOptions {\n /** Required for callers reopening a previously pinned local session. */\n readonly expectedChainId?: string\n readonly resolution: EventKitNetworkResolution\n readonly viewer: EventKitChainIdViewer\n}\n\nexport interface EventKitNetworkSession extends EventKitNetworkResolution {\n /** The exact chain observed when this session was opened. */\n readonly chainId: string\n}\n\nfunction configuredNetwork(network: EventKitNetworkId): NetworkBootstrap {\n const found = DefaultNetworks.find(candidate => candidate.id === network)\n if (found === undefined) {\n throw new Error(`XL1 SDK does not define the Event Kit network ${network}`)\n }\n return found\n}\n\nfunction parseNetworkId(value: string): EventKitNetworkId {\n if ((EVENT_KIT_NETWORK_IDS as readonly string[]).includes(value)) return value as EventKitNetworkId\n throw new TypeError(`network must be one of ${EVENT_KIT_NETWORK_IDS.join('|')}`)\n}\n\nfunction endpoint(value: string, name: string): string {\n const trimmed = value.trim()\n let parsed: URL\n try {\n parsed = new URL(trimmed)\n } catch {\n throw new TypeError(`${name} must be an absolute HTTP(S) URL`)\n }\n if (!['http:', 'https:'].includes(parsed.protocol) || parsed.username !== '' || parsed.password !== '' || parsed.hash !== '') {\n throw new TypeError(`${name} must be an absolute HTTP(S) URL without userinfo or a fragment`)\n }\n return parsed.href\n}\n\nfunction defaultRpcUrl(network: NetworkBootstrap): string {\n return `${network.url.replace(/\\/$/u, '')}/rpc`\n}\n\nfunction sdkChainId(network: NetworkBootstrap): string | undefined {\n return network.chain === undefined ? undefined : ChainIdZod.parse(String(network.chain).toLowerCase())\n}\n\nfunction publicNetworkForChain(chainId: string): EventKitNetworkId | undefined {\n if (chainId === sdkChainId(MainNetwork)) return 'mainnet'\n if (chainId === sdkChainId(SequenceNetwork)) return 'sequence'\n return undefined\n}\n\nfunction assertResolutionChain(resolution: EventKitNetworkResolution, chainId: string): void {\n const publicNetwork = publicNetworkForChain(chainId)\n if (publicNetwork !== undefined && publicNetwork !== resolution.network) {\n throw new Error(`Connected chain ${chainId} is ${publicNetwork}, not ${resolution.network}`)\n }\n if (resolution.expectedChainId !== undefined && resolution.expectedChainId !== chainId) {\n throw new Error(\n `Connected chain ID ${chainId} does not match ${resolution.network} chain ID ${resolution.expectedChainId}`,\n )\n }\n}\n\nasync function observedChainId(viewer: EventKitChainIdViewer): Promise<string> {\n return ChainIdZod.parse(String(await viewer.chainId()).toLowerCase())\n}\n\n/**\n * Resolves the supported name through the released XL1 SDK network table.\n * Overrides replace endpoints only; they never replace the SDK's public-chain identity.\n */\nexport function resolveEventKitNetwork(options: ResolveEventKitNetworkOptions): EventKitNetworkResolution {\n const networkId = parseNetworkId(options.network)\n const network = configuredNetwork(networkId)\n const defaultDataLake = NetworkDataLakeUrls[networkId]\n if (defaultDataLake === undefined) throw new Error(`XL1 SDK does not define a datalake for ${networkId}`)\n const expectedChainId = sdkChainId(network)\n return Object.freeze({\n dataLakeUrl: endpoint(options.dataLakeUrl ?? defaultDataLake, 'dataLakeUrl'),\n ...(expectedChainId === undefined ? {} : { expectedChainId }),\n network: networkId,\n rpcUrl: endpoint(options.rpcUrl ?? defaultRpcUrl(network), 'rpcUrl'),\n })\n}\n\n/** Opens a chain-pinned session after checking the live viewer against the selected SDK network. */\nexport async function pinEventKitNetworkSession(\n options: PinEventKitNetworkSessionOptions,\n): Promise<EventKitNetworkSession> {\n const chainId = await observedChainId(options.viewer)\n const requestedPin = options.expectedChainId === undefined\n ? undefined\n : ChainIdZod.parse(options.expectedChainId.toLowerCase())\n if (requestedPin !== undefined && requestedPin !== chainId) {\n throw new Error(`Connected chain ID ${chainId} does not match requested chain ID ${requestedPin}`)\n }\n assertResolutionChain(options.resolution, chainId)\n return Object.freeze({ ...options.resolution, chainId })\n}\n\n/** Rechecks the current transport against the immutable chain identity captured at session open. */\nexport async function assertEventKitNetworkSession(\n session: EventKitNetworkSession,\n viewer: EventKitChainIdViewer,\n): Promise<void> {\n const network = parseNetworkId(session.network)\n const chainId = ChainIdZod.parse(session.chainId.toLowerCase())\n assertResolutionChain({ ...session, network }, chainId)\n const observed = await observedChainId(viewer)\n if (observed !== chainId) {\n throw new Error(`Connected chain ID ${observed} does not match pinned chain ID ${chainId}`)\n }\n}\n\n/**\n * Enforces Phase 3 write policy. Mainnet is rejected without an acknowledgement escape hatch;\n * Phase 7 must introduce and qualify any future canary mechanism deliberately.\n */\nexport async function assertEventKitNetworkWrite(\n session: EventKitNetworkSession,\n viewer: EventKitChainIdViewer,\n): Promise<void> {\n if (session.network === 'mainnet' || session.chainId === sdkChainId(MainNetwork)) {\n throw new Error('Event Kit Mainnet writes are disabled until the Phase 7 canary interlock exists')\n }\n await assertEventKitNetworkSession(session, viewer)\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * Structural shape shared by the publisher's `FinalizedHeadSource` and the\n * receiver's `TrustedFinalizedHeadSource`. Declared here so this adapter depends\n * on neither package.\n */\nexport interface FinalizedHeadReader {\n headNumber: () => Promise<number>\n}\n\n/** The slice of the XL1 viewer this adapter reads. */\nexport interface Xl1FinalizationViewer {\n readonly finalization: { headNumber: () => Promise<number> }\n}\n\nexport interface Xl1FinalizedHeadSourceOptions {\n /**\n * Reject a head lower than one already observed.\n *\n * Finalized heights are immutable, so a regression means the endpoint was\n * rolled back, swapped, or is lying. Defaults to `true`: admission and cursor\n * decisions both treat this value as trusted, and failing closed is safer than\n * admitting against a rewound view.\n */\n readonly rejectRegression?: boolean\n readonly viewer: Xl1FinalizationViewer\n}\n\n/**\n * Reads the finalized XL1 head for publisher filters and receiver grant\n * freshness.\n *\n * The value is validated rather than forwarded: D-002 requires nonnegative JSON\n * safe integers for every head input, and a non-conforming reading is rejected\n * here instead of surfacing later as an opaque `grant-view-invalid`.\n */\nexport function createXl1FinalizedHeadSource(\n options: Xl1FinalizedHeadSourceOptions,\n): FinalizedHeadReader {\n const rejectRegression = options.rejectRegression ?? true\n let highest = -1\n\n return {\n async headNumber(): Promise<number> {\n const head = await options.viewer.finalization.headNumber()\n if (typeof head !== 'number' || !Number.isSafeInteger(head) || head < 0) {\n throw new TypeError(`XL1 finalized head must be a nonnegative safe integer, received ${String(head)}`)\n }\n if (rejectRegression && head < highest) {\n throw new RangeError(`XL1 finalized head regressed from ${highest} to ${head}`)\n }\n if (head > highest) highest = head\n return head\n },\n }\n}\n", "import {\n WakeSubscriptionAcceptanceSchema,\n WakeSubscriptionAcceptanceZod,\n} from '@xyo-network/event-kit-schemas'\nimport type { Payload } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport type {\n BlockViewer,\n DataLakeRunner,\n DataLakeViewer,\n SignedXl1TransactionEvidence,\n TransactionInclusion,\n TransactionOptions,\n UnsignedHydratedTransaction,\n Xl1TransactionBuildViewer,\n Xl1TransactionSigner,\n XyoRunner,\n} from '@xyo-network/xl1-sdk'\nimport {\n broadcastXl1Transaction,\n buildXl1Transaction,\n createSignedXl1TransactionEvidence,\n observeXl1TransactionFinality,\n observeXl1TransactionInclusion,\n signXl1Transaction,\n verifyXl1TransactionContent,\n writeXl1TransactionContent,\n} from '@xyo-network/xl1-sdk'\nimport type { PreparedStatements, StatementToPublish } from '@xyo-network/xl1-statement-graph-sdk'\nimport { insertVerified, prepareStatements } from '@xyo-network/xl1-statement-graph-sdk'\n\nexport { createMemoryFinalizedStatementPublicationJournal } from './memoryFinalizedStatementPublicationJournal.ts'\n\nexport type FinalizedStatementPublicationPhase\n = | 'broadcast' | 'content-verified' | 'content-written'\n | 'finalized' | 'included' | 'signed'\n\nexport interface FinalizedStatementPublicationRecord {\n readonly attachmentHashes: readonly string[]\n readonly chainId: string\n readonly eventHashes: readonly string[]\n readonly evidence: SignedXl1TransactionEvidence\n readonly inclusion?: TransactionInclusion\n readonly operationId: string\n readonly phase: FinalizedStatementPublicationPhase\n readonly source: string\n}\n\nexport interface FinalizedStatementPublicationIntent {\n readonly attachmentHashes: readonly string[]\n readonly chainId: string\n readonly eventHashes: readonly string[]\n readonly operationId: string\n readonly source: string\n}\n\nexport interface FinalizedStatementPublicationJournal {\n /** Loads the highest durable phase; save must durably commit before resolving. */\n load(intent: FinalizedStatementPublicationIntent): Promise<FinalizedStatementPublicationRecord | undefined>\n save(record: FinalizedStatementPublicationRecord): Promise<void>\n}\n\nexport interface FinalizedStatementPublicationPolling {\n readonly attempts?: number\n readonly delayMs?: number\n readonly wait?: (delayMs: number) => Promise<void>\n}\n\nexport interface FinalizedStatementPublicationOptions {\n /** Exact challenge/response bodies referenced by claimed wake-subscription acceptances. */\n readonly attachments?: readonly Payload[]\n readonly bodyReader: Pick<DataLakeViewer, 'get'>\n readonly bodyWriter: Pick<DataLakeRunner, 'insert'>\n readonly broadcast?: TransactionOptions\n readonly expectedChainId?: string\n readonly expectedSource?: string\n readonly journal: FinalizedStatementPublicationJournal\n /** A source may never reuse this id for a different ordered event/attachment intent. */\n readonly operationId: string\n readonly polling?: FinalizedStatementPublicationPolling\n readonly runner: Pick<XyoRunner, 'broadcastTransaction'>\n readonly signer: Xl1TransactionSigner\n readonly statements: readonly StatementToPublish[]\n readonly viewer: Xl1TransactionBuildViewer & {\n readonly block: Pick<BlockViewer, 'blockByHash' | 'blockByTransactionHash'>\n }\n}\n\nexport interface FinalizedStatementPublicationResult {\n readonly attachmentHashes: readonly string[]\n readonly eventHashes: readonly string[]\n readonly evidence: SignedXl1TransactionEvidence\n readonly finalizedBlock: number\n readonly inclusion: TransactionInclusion\n readonly transactionHash: string\n}\n\nfunction positiveInteger(value: number | undefined, fallback: number, name: string): number {\n const selected = value ?? fallback\n if (!Number.isSafeInteger(selected) || selected < 1) throw new TypeError(`${name} must be a positive safe integer`)\n return selected\n}\n\nfunction nonnegativeInteger(value: number | undefined, fallback: number, name: string): number {\n const selected = value ?? fallback\n if (!Number.isSafeInteger(selected) || selected < 0) throw new TypeError(`${name} must be a nonnegative safe integer`)\n return selected\n}\n\nfunction safeBlockNumber(value: unknown, name: string): number {\n if (typeof value === 'bigint') {\n if (value < 0n || value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new TypeError(`${name} must be a nonnegative safe integer`)\n }\n return Number(value)\n }\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {\n throw new TypeError(`${name} must be a nonnegative safe integer`)\n }\n return value\n}\n\nfunction validateInclusion(inclusion: TransactionInclusion, name: string): number {\n const blockNumber = safeBlockNumber(inclusion.blockNumber, `${name}.blockNumber`)\n if (!Number.isSafeInteger(inclusion.transactionIndex) || inclusion.transactionIndex < 0) {\n throw new TypeError(`${name}.transactionIndex must be a nonnegative safe integer`)\n }\n return blockNumber\n}\n\nfunction assertSameInclusion(\n inclusion: TransactionInclusion,\n inclusionBlock: number,\n finalized: TransactionInclusion,\n finalizedBlock: number,\n): void {\n if (\n finalized.blockHash !== inclusion.blockHash\n || finalizedBlock !== inclusionBlock\n || finalized.transactionHash !== inclusion.transactionHash\n || finalized.transactionIndex !== inclusion.transactionIndex\n ) {\n throw new Error('Finality evidence does not match the observed transaction inclusion')\n }\n}\n\nfunction sameStrings(left: readonly string[], right: readonly string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index])\n}\n\nconst PublicationPhases = [\n 'signed',\n 'content-written',\n 'content-verified',\n 'broadcast',\n 'included',\n 'finalized',\n] as const satisfies readonly FinalizedStatementPublicationPhase[]\n\nconst PublicationPhaseSet = new Set<FinalizedStatementPublicationPhase>(PublicationPhases)\n\nfunction publicationOperationId(value: string): string {\n if (typeof value !== 'string' || value.length === 0 || value.length > 256) {\n throw new TypeError('operationId must be a nonempty string of at most 256 characters')\n }\n return value\n}\n\nfunction sameValue(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left)\n && Array.isArray(right)\n && left.length === right.length\n && left.every((value, index) => sameValue(value, right[index]))\n }\n if (typeof left !== 'object' || left === null || typeof right !== 'object' || right === null) return false\n const leftRecord = left as Record<string, unknown>\n const rightRecord = right as Record<string, unknown>\n const leftKeys = Object.keys(leftRecord).toSorted()\n const rightKeys = Object.keys(rightRecord).toSorted()\n return sameStrings(leftKeys, rightKeys)\n && leftKeys.every(key => sameValue(leftRecord[key], rightRecord[key]))\n}\n\nfunction sameIntent(\n left: FinalizedStatementPublicationIntent,\n right: FinalizedStatementPublicationIntent,\n): boolean {\n return left.operationId === right.operationId\n && left.source === right.source\n && left.chainId === right.chainId\n && sameStrings(left.eventHashes, right.eventHashes)\n && sameStrings(left.attachmentHashes, right.attachmentHashes)\n}\n\nfunction intentFromRecord(record: FinalizedStatementPublicationRecord): FinalizedStatementPublicationIntent {\n return {\n attachmentHashes: record.attachmentHashes,\n chainId: record.chainId,\n eventHashes: record.eventHashes,\n operationId: record.operationId,\n source: record.source,\n }\n}\n\nfunction acceptanceAttachmentHashes(statements: readonly StatementToPublish[]): Set<string> {\n const hashes = new Set<string>()\n for (const statement of statements) {\n addAcceptanceAttachmentHashes(hashes, statement)\n }\n return hashes\n}\n\nfunction addAcceptanceAttachmentHashes(hashes: Set<string>, statement: StatementToPublish): void {\n for (const object of statement.objects) {\n if (object.schema !== WakeSubscriptionAcceptanceSchema) continue\n const acceptance = WakeSubscriptionAcceptanceZod.safeParse(object)\n if (!acceptance.success) throw new TypeError('Claimed wake subscription acceptance is malformed')\n hashes.add(acceptance.data.challenge)\n hashes.add(acceptance.data.response)\n }\n}\n\nasync function assertExactAcceptanceAttachments(\n statements: readonly StatementToPublish[],\n attachments: readonly Payload[],\n): Promise<readonly string[]> {\n const missing = acceptanceAttachmentHashes(statements)\n const supplied = new Set<string>()\n const hashes: string[] = []\n for (const attachment of attachments) {\n const hash = String(await PayloadBuilder.dataHash(attachment))\n if (supplied.has(hash)) {\n throw new Error(`Duplicate publication attachment ${hash}`)\n }\n if (!missing.delete(hash)) {\n throw new Error(`Publication attachment ${hash} is not referenced by a wake subscription acceptance`)\n }\n supplied.add(hash)\n hashes.push(hash)\n }\n if (missing.size > 0) {\n throw new Error(`Wake subscription acceptance is missing publication attachment ${[...missing].join(', ')}`)\n }\n return hashes\n}\n\nfunction signingIntent<\n T extends UnsignedHydratedTransaction[0] | SignedXl1TransactionEvidence['transaction'][0],\n>(transaction: T): T {\n const intent = structuredClone(transaction)\n intent.$signatures.length = 0\n intent.addresses.length = 0\n intent.previous_hashes.length = 0\n return intent\n}\n\nasync function assertSignedPublicationIntent(\n unsigned: UnsignedHydratedTransaction,\n evidence: SignedXl1TransactionEvidence,\n signerAddress: string,\n): Promise<void> {\n const signed = evidence.transaction\n if (String(evidence.from) !== signerAddress || String(signed[0].from) !== signerAddress) {\n throw new Error('Signed transaction from address does not match the requested signer')\n }\n if (signed[0].addresses.length !== 1 || String(signed[0].addresses[0]) !== signerAddress) {\n throw new Error('Signed transaction witness does not contain exactly the requested signer')\n }\n\n const [unsignedIntentHash, signedIntentHash, unsignedPayloadHashes, signedPayloadHashes] = await Promise.all([\n PayloadBuilder.hash(signingIntent(unsigned[0])),\n PayloadBuilder.hash(signingIntent(signed[0])),\n PayloadBuilder.hashes([...unsigned[1]]),\n PayloadBuilder.hashes([...signed[1]]),\n ])\n if (unsignedIntentHash !== signedIntentHash || !sameStrings(unsignedPayloadHashes, signedPayloadHashes)) {\n throw new Error('Signed transaction content differs from the transaction submitted for signing')\n }\n}\n\nasync function assertPreparedPublicationIntent(\n prepared: PreparedStatements,\n evidence: SignedXl1TransactionEvidence,\n intent: FinalizedStatementPublicationIntent,\n): Promise<void> {\n const signed = evidence.transaction\n if (String(evidence.from) !== intent.source || String(signed[0].from) !== intent.source) {\n throw new Error('Signed transaction from address does not match the requested signer')\n }\n if (signed[0].addresses.length !== 1 || String(signed[0].addresses[0]) !== intent.source) {\n throw new Error('Signed transaction witness does not contain exactly the requested signer')\n }\n if (String(evidence.chainId) !== intent.chainId || String(signed[0].chain) !== intent.chainId) {\n throw new Error('Signed transaction chain does not match the requested publication chain')\n }\n\n const [expectedPayloadHashes, signedPayloadHashes, elevatedHashes] = await Promise.all([\n PayloadBuilder.hashes([...prepared.transactionPayloads]),\n PayloadBuilder.hashes([...signed[1]]),\n PayloadBuilder.hashes([...prepared.onChainPayloads]),\n ])\n const expectedSchemas = prepared.transactionPayloads.map(payload => String(payload.schema))\n const expectedScript = elevatedHashes.map(hash => `elevate|${hash}`)\n if (\n !sameStrings(expectedPayloadHashes, signedPayloadHashes)\n || !sameStrings(expectedPayloadHashes, signed[0].payload_hashes)\n || !sameStrings(expectedSchemas, signed[0].payload_schemas)\n || !sameStrings(expectedScript, signed[0].script ?? [])\n ) {\n throw new Error('Signed transaction content differs from the requested publication intent')\n }\n}\n\nasync function assertResumableEvidence(\n evidence: SignedXl1TransactionEvidence,\n): Promise<void> {\n const reconstructed = await createSignedXl1TransactionEvidence(evidence.transaction)\n if (!sameValue(reconstructed, evidence)) {\n throw new Error('Publication journal evidence does not match its signed transaction')\n }\n}\n\nasync function assertPublicationRecord(\n record: FinalizedStatementPublicationRecord,\n intent: FinalizedStatementPublicationIntent,\n prepared: PreparedStatements,\n): Promise<void> {\n if (typeof record !== 'object' || record === null) {\n throw new Error('Publication journal returned a malformed record')\n }\n if (!PublicationPhaseSet.has(record.phase)) throw new Error('Publication journal returned an unknown phase')\n if (!sameIntent(intentFromRecord(record), intent)) {\n throw new Error('Publication journal returned a different publication intent')\n }\n await assertResumableEvidence(record.evidence)\n await assertPreparedPublicationIntent(prepared, record.evidence, intent)\n\n const requiresInclusion = record.phase === 'included' || record.phase === 'finalized'\n if (requiresInclusion !== (record.inclusion !== undefined)) {\n throw new Error(`Publication journal ${record.phase} record has invalid inclusion evidence`)\n }\n if (record.inclusion === undefined) {\n return\n }\n\n validateInclusion(record.inclusion, record.phase)\n if (record.inclusion.transactionHash !== record.evidence.transactionHash) {\n throw new Error('Publication journal inclusion does not identify the signed transaction')\n }\n}\n\nasync function defaultWait(delayMs: number): Promise<void> {\n await new Promise<void>(resolve => setTimeout(resolve, delayMs))\n}\n\nasync function poll<T>(\n operation: () => Promise<T | null>,\n options: FinalizedStatementPublicationPolling | undefined,\n label: string,\n): Promise<T> {\n const attempts = positiveInteger(options?.attempts, 120, 'polling.attempts')\n const delayMs = nonnegativeInteger(options?.delayMs, 500, 'polling.delayMs')\n const wait = options?.wait ?? defaultWait\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n const result = await operation()\n if (result !== null) return result\n if (attempt < attempts) await wait(delayMs)\n }\n throw new Error(`${label} was not observed after ${attempts} attempts`)\n}\n\nasync function record(\n journal: FinalizedStatementPublicationJournal,\n phase: FinalizedStatementPublicationPhase,\n evidence: SignedXl1TransactionEvidence,\n intent: FinalizedStatementPublicationIntent,\n inclusion?: TransactionInclusion,\n): Promise<FinalizedStatementPublicationRecord> {\n const result = {\n ...intent,\n evidence,\n ...(inclusion === undefined ? {} : { inclusion }),\n phase,\n }\n await journal.save(result)\n return result\n}\n\nfunction finalizedResult(record: FinalizedStatementPublicationRecord): FinalizedStatementPublicationResult {\n if (record.phase !== 'finalized' || record.inclusion === undefined) {\n throw new Error('Cannot construct finalized publication result from an incomplete record')\n }\n const finalizedBlock = validateInclusion(record.inclusion, 'finality')\n if (record.inclusion.transactionHash !== record.evidence.transactionHash) throw new Error('Inclusion does not identify signed publication')\n return {\n attachmentHashes: record.attachmentHashes,\n eventHashes: record.eventHashes,\n evidence: record.evidence,\n finalizedBlock,\n inclusion: record.inclusion,\n transactionHash: record.evidence.transactionHash,\n }\n}\n\nasync function bindSignedPublication(\n options: FinalizedStatementPublicationOptions,\n prepared: PreparedStatements,\n intent: FinalizedStatementPublicationIntent,\n): Promise<FinalizedStatementPublicationRecord> {\n const pinnedSigner: Xl1TransactionSigner = {\n address: () => intent.source as never,\n signTransaction: transaction => options.signer.signTransaction(transaction),\n }\n const pinnedViewer: Xl1TransactionBuildViewer = {\n chainId: () => intent.chainId as never,\n currentBlockNumber: () => options.viewer.currentBlockNumber(),\n }\n const unsigned = await buildXl1Transaction(\n pinnedViewer,\n pinnedSigner,\n // Statement Graph 0.5 guarantees this partition contains only the Claim\n // events from StatementToPublish. Its published PreparedStatements type is\n // broader (`Payload[]`) than that runtime contract, while XL1 correctly\n // requires the narrower elevated-payload union.\n prepared.onChainPayloads as StatementToPublish['event'][],\n prepared.offChainPayloads,\n options.broadcast,\n )\n const evidence = await signXl1Transaction(pinnedSigner, unsigned)\n await assertSignedPublicationIntent(unsigned, evidence, intent.source)\n await assertPreparedPublicationIntent(prepared, evidence, intent)\n return await record(options.journal, 'signed', evidence, intent)\n}\n\nasync function exactPublicationInclusion(\n options: FinalizedStatementPublicationOptions,\n evidence: SignedXl1TransactionEvidence,\n): Promise<TransactionInclusion | null> {\n const inclusion = await observeXl1TransactionInclusion(options.viewer.block, evidence.transactionHash)\n if (inclusion === null) return null\n validateInclusion(inclusion, 'inclusion')\n if (inclusion.transactionHash !== evidence.transactionHash) throw new Error('Inclusion does not identify signed publication')\n return inclusion\n}\n\nasync function advanceBroadcast(\n options: FinalizedStatementPublicationOptions,\n intent: FinalizedStatementPublicationIntent,\n publication: FinalizedStatementPublicationRecord,\n resumed: boolean,\n): Promise<FinalizedStatementPublicationRecord> {\n const evidence = publication.evidence\n if (resumed) {\n const inclusion = await exactPublicationInclusion(options, evidence)\n if (inclusion !== null) return await record(options.journal, 'included', evidence, intent, inclusion)\n }\n try {\n await broadcastXl1Transaction(options.runner, evidence)\n } catch (error) {\n if (!resumed) throw error\n const inclusion = await exactPublicationInclusion(options, evidence)\n if (inclusion === null) throw error\n return await record(options.journal, 'included', evidence, intent, inclusion)\n }\n return publication.phase === 'content-verified'\n ? await record(options.journal, 'broadcast', evidence, intent)\n : publication\n}\n\nasync function completePublication(\n options: FinalizedStatementPublicationOptions,\n intent: FinalizedStatementPublicationIntent,\n initial: FinalizedStatementPublicationRecord,\n resumedFromBroadcastBoundary: boolean,\n): Promise<FinalizedStatementPublicationRecord> {\n let publication = initial\n const evidence = publication.evidence\n if (publication.phase === 'signed') {\n await writeXl1TransactionContent(options.bodyWriter, evidence)\n publication = await record(options.journal, 'content-written', evidence, intent)\n }\n if (publication.phase === 'content-written') {\n await verifyXl1TransactionContent(options.bodyReader, evidence)\n publication = await record(options.journal, 'content-verified', evidence, intent)\n }\n if (publication.phase === 'content-verified' || publication.phase === 'broadcast') {\n publication = await advanceBroadcast(options, intent, publication, resumedFromBroadcastBoundary)\n }\n if (publication.phase === 'broadcast') {\n const inclusion = await poll(\n async () => await observeXl1TransactionInclusion(options.viewer.block, evidence.transactionHash),\n options.polling,\n `transaction ${evidence.transactionHash} inclusion`,\n )\n validateInclusion(inclusion, 'inclusion')\n if (inclusion.transactionHash !== evidence.transactionHash) throw new Error('Inclusion does not identify signed publication')\n publication = await record(options.journal, 'included', evidence, intent, inclusion)\n }\n if (publication.phase === 'included') {\n const inclusion = publication.inclusion\n if (inclusion === undefined) throw new Error('Included publication is missing inclusion evidence')\n const inclusionBlock = validateInclusion(inclusion, 'inclusion')\n const finalized = await poll(\n async () => await observeXl1TransactionFinality(options.viewer.block, inclusion),\n options.polling,\n `transaction ${evidence.transactionHash} finality`,\n )\n const finalizedBlock = validateInclusion(finalized, 'finality')\n assertSameInclusion(inclusion, inclusionBlock, finalized, finalizedBlock)\n publication = await record(options.journal, 'finalized', evidence, intent, finalized)\n }\n return publication\n}\n\n/**\n * Publishes one Statement Graph transaction through explicit crash boundaries:\n * prepare/sign, write all exact content, independently read it back, broadcast,\n * observe inclusion, and independently recheck finality.\n */\nexport async function publishFinalizedStatements(\n options: FinalizedStatementPublicationOptions,\n): Promise<FinalizedStatementPublicationResult> {\n const chainId = String(await options.viewer.chainId())\n if (options.expectedChainId !== undefined && chainId !== options.expectedChainId) {\n throw new Error('XL1 viewer chain does not match the expected publication chain')\n }\n const signerAddress = String(await options.signer.address())\n if (options.expectedSource !== undefined && signerAddress !== options.expectedSource) {\n throw new Error('XL1 signer does not match the expected publication source')\n }\n const prepared = await prepareStatements(options.statements, [signerAddress])\n const attachmentHashes = await assertExactAcceptanceAttachments(\n options.statements,\n options.attachments ?? [],\n )\n const intent: FinalizedStatementPublicationIntent = {\n attachmentHashes,\n chainId,\n eventHashes: prepared.eventHashes,\n operationId: publicationOperationId(options.operationId),\n source: signerAddress,\n }\n let publication = await options.journal.load(intent)\n const resumedFromBroadcastBoundary = publication?.phase === 'content-verified' || publication?.phase === 'broadcast'\n if (publication !== undefined) {\n await assertPublicationRecord(publication, intent, prepared)\n if (publication.phase === 'finalized') return finalizedResult(publication)\n }\n\n const verifiedAttachmentHashes = await insertVerified(\n {\n get: async hashes => await options.bodyReader.get(hashes as never),\n insert: async payloads => await options.bodyWriter.insert(payloads as never),\n },\n options.attachments ?? [],\n )\n if (!sameStrings(attachmentHashes, verifiedAttachmentHashes)) {\n throw new Error('Verified publication attachment hashes differ from the supplied attachment bodies')\n }\n\n publication ??= await bindSignedPublication(options, prepared, intent)\n publication = await completePublication(options, intent, publication, resumedFromBroadcastBoundary)\n return finalizedResult(publication)\n}\n", "import type {\n FinalizedStatementPublicationIntent,\n FinalizedStatementPublicationJournal,\n FinalizedStatementPublicationPhase,\n FinalizedStatementPublicationRecord,\n} from './finalizedStatementPublication.ts'\n\nconst PublicationPhases = [\n 'signed',\n 'content-written',\n 'content-verified',\n 'broadcast',\n 'included',\n 'finalized',\n] as const satisfies readonly FinalizedStatementPublicationPhase[]\n\nfunction sameStrings(left: readonly string[], right: readonly string[]): boolean {\n return left.length === right.length && left.every((value, index) => value === right[index])\n}\n\nfunction sameValue(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left)\n && Array.isArray(right)\n && left.length === right.length\n && left.every((value, index) => sameValue(value, right[index]))\n }\n if (typeof left !== 'object' || left === null || typeof right !== 'object' || right === null) return false\n const leftRecord = left as Record<string, unknown>\n const rightRecord = right as Record<string, unknown>\n const leftKeys = Object.keys(leftRecord).toSorted()\n const rightKeys = Object.keys(rightRecord).toSorted()\n return sameStrings(leftKeys, rightKeys)\n && leftKeys.every(key => sameValue(leftRecord[key], rightRecord[key]))\n}\n\nfunction sameIntent(\n left: FinalizedStatementPublicationIntent,\n right: FinalizedStatementPublicationIntent,\n): boolean {\n return left.operationId === right.operationId\n && left.source === right.source\n && left.chainId === right.chainId\n && sameStrings(left.eventHashes, right.eventHashes)\n && sameStrings(left.attachmentHashes, right.attachmentHashes)\n}\n\nfunction publicationKey(intent: FinalizedStatementPublicationIntent): string {\n return `${intent.chainId}\\u{0}${intent.source}\\u{0}${intent.operationId}`\n}\n\nfunction intentFromRecord(record: FinalizedStatementPublicationRecord): FinalizedStatementPublicationIntent {\n return {\n attachmentHashes: record.attachmentHashes,\n chainId: record.chainId,\n eventHashes: record.eventHashes,\n operationId: record.operationId,\n source: record.source,\n }\n}\n\nexport function createMemoryFinalizedStatementPublicationJournal(): FinalizedStatementPublicationJournal & {\n readonly records: readonly FinalizedStatementPublicationRecord[]\n} {\n const records: FinalizedStatementPublicationRecord[] = []\n const publications = new Map<string, Map<FinalizedStatementPublicationPhase, FinalizedStatementPublicationRecord>>()\n\n function phasesForExactIntent(intent: FinalizedStatementPublicationIntent) {\n const phases = publications.get(publicationKey(intent))\n const signed = phases?.get('signed')\n if (signed !== undefined && !sameIntent(intentFromRecord(signed), intent)) {\n throw new Error('publication journal intent collision')\n }\n return phases\n }\n\n return {\n records,\n async load(intent): Promise<FinalizedStatementPublicationRecord | undefined> {\n const phases = phasesForExactIntent(intent)\n if (phases === undefined) return undefined\n for (const phase of PublicationPhases.toReversed()) {\n const candidate = phases.get(phase)\n if (candidate !== undefined) return structuredClone(candidate)\n }\n throw new Error('publication journal has an intent without signed evidence')\n },\n async save(record): Promise<void> {\n let phases = phasesForExactIntent(record)\n if (phases === undefined) {\n if (record.phase !== 'signed') throw new Error('publication journal must bind signed evidence first')\n phases = new Map()\n publications.set(publicationKey(record), phases)\n }\n const signed = phases.get('signed')\n if (signed !== undefined && !sameValue(signed.evidence, record.evidence)) {\n throw new Error('publication journal evidence collision')\n }\n const existing = phases.get(record.phase)\n if (existing !== undefined) {\n if (!sameValue(existing, record)) throw new Error(`publication journal collision at ${record.phase}`)\n return\n }\n const durable = structuredClone(record)\n phases.set(record.phase, durable)\n records.push(structuredClone(durable))\n },\n }\n}\n", "import type {\n EncryptedWakeSubscription,\n EndpointChallenge,\n EndpointChallengeResponse,\n PublisherEncryptionKey,\n PublisherEncryptionKeyRevocation,\n PublisherService,\n PublisherServiceRevocation,\n WakeGrantObject,\n WakeGrantRevocation,\n WakeSubscriptionAcceptance,\n WakeSubscriptionAcceptanceRevocation,\n WakeSubscriptionRevocation,\n} from '@xyo-network/event-kit-schemas'\nimport {\n EncryptedWakeSubscriptionZod,\n EndpointChallengeResponseZod,\n EndpointChallengeZod,\n hasMatchingHandshakeProfile,\n normalizeAddress,\n NormalizedAddressZod,\n PublisherEncryptionKeyRevocationZod,\n PublisherEncryptionKeyZod,\n PublisherServiceRevocationZod,\n PublisherServiceZod,\n WakeGrantObjectZod,\n WakeGrantRevocationZod,\n WakeSubscriptionAcceptanceRevocationZod,\n WakeSubscriptionAcceptanceZod,\n WakeSubscriptionRevocationZod,\n} from '@xyo-network/event-kit-schemas'\nimport type { Payload } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport type { StatementToPublish } from '@xyo-network/xl1-statement-graph-sdk'\nimport { buildClaim } from '@xyo-network/xl1-statement-graph-sdk'\n\nimport type {\n FinalizedStatementPublicationOptions,\n FinalizedStatementPublicationResult,\n} from './finalizedStatementPublication.ts'\nimport { publishFinalizedStatements } from './finalizedStatementPublication.ts'\nimport type { EventKitNetworkSession } from './networkSession.ts'\nimport { assertEventKitNetworkWrite } from './networkSession.ts'\n\nexport type HandshakePublicationTransport = Omit<\n FinalizedStatementPublicationOptions,\n 'attachments' | 'expectedChainId' | 'expectedSource' | 'operationId' | 'statements'\n> & {\n readonly session: EventKitNetworkSession\n}\n\ntype HandshakePublicationOperationTransport = HandshakePublicationTransport & Pick<\n FinalizedStatementPublicationOptions,\n 'operationId'\n>\n\ninterface PublishedObjectIdentityBase {\n readonly objectHash: string\n readonly schema: string\n}\n\nexport type PublishedHandshakeObjectIdentity\n = | PublishedObjectIdentityBase & {\n readonly kind: 'publisher-service'\n readonly revision: number\n readonly serviceId: string\n }\n | PublishedObjectIdentityBase & {\n readonly keyId: string\n readonly kind: 'publisher-encryption-key'\n }\n | PublishedObjectIdentityBase & {\n readonly deploymentId: string\n readonly grantId: string\n readonly kind: 'wake-grant'\n }\n | PublishedObjectIdentityBase & {\n readonly kind: 'wake-subscription'\n readonly revision: number\n readonly subscriptionId: string\n }\n | PublishedObjectIdentityBase & {\n readonly challenge: string\n readonly kind: 'wake-subscription-acceptance'\n readonly response: string\n readonly subscription: string\n }\n | PublishedObjectIdentityBase & {\n readonly kind:\n | 'publisher-encryption-key-revocation'\n | 'publisher-service-revocation'\n | 'wake-grant-revocation'\n | 'wake-subscription-acceptance-revocation'\n | 'wake-subscription-revocation'\n readonly targetHash: string\n }\n\nexport interface HandshakePublicationResult extends FinalizedStatementPublicationResult {\n readonly chainId: EventKitNetworkSession['chainId']\n readonly claim: StatementToPublish['event']\n readonly claimHash: string\n readonly network: EventKitNetworkSession['network']\n readonly objects: readonly PublishedHandshakeObjectIdentity[]\n readonly source: string\n readonly subject: string\n}\n\nexport interface PublishPublisherServiceOptions extends HandshakePublicationOperationTransport {\n /** Every descriptor referenced by service.encryptionKeys, in any order. */\n readonly encryptionKeys: readonly PublisherEncryptionKey[]\n readonly service: PublisherService\n}\n\nexport interface PublishWakeSubscriptionOptions extends HandshakePublicationOperationTransport {\n readonly encryptionKey: PublisherEncryptionKey\n readonly grant: WakeGrantObject\n readonly service: PublisherService\n readonly subscription: EncryptedWakeSubscription\n}\n\nexport interface PublishWakeSubscriptionAcceptanceOptions extends HandshakePublicationOperationTransport {\n readonly acceptance: WakeSubscriptionAcceptance\n readonly challenge: EndpointChallenge\n readonly response: EndpointChallengeResponse\n}\n\nexport interface PublishPublisherServiceRevocationOptions extends HandshakePublicationOperationTransport {\n readonly revocation: PublisherServiceRevocation\n}\n\nexport interface PublishPublisherEncryptionKeyRevocationOptions extends HandshakePublicationOperationTransport {\n readonly revocation: PublisherEncryptionKeyRevocation\n}\n\nexport interface PublishWakeSubscriptionRevocationOptions extends HandshakePublicationOperationTransport {\n readonly publisher: string\n readonly revocation: WakeSubscriptionRevocation\n}\n\nexport interface PublishWakeGrantRevocationOptions extends HandshakePublicationOperationTransport {\n readonly publisher: string\n readonly revocation: WakeGrantRevocation\n}\n\nexport interface PublishWakeSubscriptionAcceptanceRevocationOptions extends HandshakePublicationOperationTransport {\n readonly revocation: WakeSubscriptionAcceptanceRevocation\n}\n\nasync function objectHash(object: Payload): Promise<string> {\n return String(await PayloadBuilder.dataHash(object))\n}\n\nasync function signerSource(options: HandshakePublicationTransport): Promise<string> {\n const raw = String(await options.signer.address())\n const normalized = NormalizedAddressZod.parse(normalizeAddress(raw))\n if (raw !== normalized) {\n throw new TypeError('XL1 signer address must be canonical lowercase hexadecimal without 0x')\n }\n return normalized\n}\n\nfunction failBinding(message: string): never {\n throw new Error(`Invalid Event Kit handshake publication: ${message}`)\n}\n\nasync function publishHandshakeObjects(\n transport: HandshakePublicationOperationTransport,\n source: string,\n subject: string,\n objects: readonly Payload[],\n identities: readonly PublishedHandshakeObjectIdentity[],\n attachments: readonly Payload[] = [],\n): Promise<HandshakePublicationResult> {\n await assertEventKitNetworkWrite(transport.session, transport.viewer)\n if (source !== await signerSource(transport)) failBinding('Claim source does not match the transaction signer')\n const hashes = identities.map(identity => identity.objectHash)\n const claim = buildClaim({\n hashes, source, subject,\n })\n const claimHash = await objectHash(claim)\n const { session: _session, ...publication } = transport\n const result = await publishFinalizedStatements({\n ...publication,\n attachments,\n expectedChainId: transport.session.chainId,\n expectedSource: source,\n statements: [{ event: claim, objects }],\n })\n if (result.eventHashes.length !== 1 || result.eventHashes[0] !== claimHash) {\n throw new Error('Finalized publication evidence does not identify the exact Event Kit Claim')\n }\n return {\n ...result,\n chainId: transport.session.chainId,\n claim,\n claimHash,\n network: transport.session.network,\n objects: identities,\n source,\n subject,\n }\n}\n\n/** Publishes one atomic publisher-authored service revision and all key descriptors it names. */\nexport async function publishPublisherService(\n options: PublishPublisherServiceOptions,\n): Promise<HandshakePublicationResult> {\n const {\n encryptionKeys: rawKeys, service: rawService, ...transport\n } = options\n const service = PublisherServiceZod.parse(rawService)\n if (service.authorizationChainId !== transport.session.chainId) {\n failBinding('service authorizationChainId does not match the pinned session')\n }\n const keys = rawKeys.map(key => PublisherEncryptionKeyZod.parse(key))\n const source = await signerSource(transport)\n const [serviceHash, keyEntries] = await Promise.all([\n objectHash(service),\n Promise.all(keys.map(async key => ({ hash: await objectHash(key), key }))),\n ])\n const keysByHash = new Map(keyEntries.map(entry => [entry.hash, entry.key]))\n if (keysByHash.size !== keyEntries.length) failBinding('encryption key descriptor bodies must be unique')\n if (keysByHash.size !== service.encryptionKeys.length\n || service.encryptionKeys.some(hash => !keysByHash.has(hash))) {\n failBinding('service.encryptionKeys must exactly identify the supplied key descriptors')\n }\n const orderedKeys = service.encryptionKeys.map((hash) => {\n const key = keysByHash.get(hash)\n return key === undefined ? failBinding(`missing encryption key descriptor ${hash}`) : { hash, key }\n })\n return await publishHandshakeObjects(\n transport,\n source,\n source,\n [service, ...orderedKeys.map(entry => entry.key)],\n [\n {\n kind: 'publisher-service',\n objectHash: serviceHash,\n revision: service.revision,\n schema: service.schema,\n serviceId: service.serviceId,\n },\n ...orderedKeys.map(({ hash, key }) => ({\n keyId: key.keyId,\n kind: 'publisher-encryption-key' as const,\n objectHash: hash,\n schema: key.schema,\n })),\n ],\n )\n}\n\n/** Publishes the subscriber's exact service/grant/encrypted-subscription same-Claim fan. */\nexport async function publishWakeSubscription(\n options: PublishWakeSubscriptionOptions,\n): Promise<HandshakePublicationResult> {\n const {\n encryptionKey: rawKey,\n grant: rawGrant,\n service: rawService,\n subscription: rawSubscription,\n ...transport\n } = options\n const key = PublisherEncryptionKeyZod.parse(rawKey)\n const grant = WakeGrantObjectZod.parse(rawGrant)\n const service = PublisherServiceZod.parse(rawService)\n if (service.authorizationChainId !== transport.session.chainId) {\n failBinding('service authorizationChainId does not match the pinned session')\n }\n const subscription = EncryptedWakeSubscriptionZod.parse(rawSubscription)\n if (subscription.chainId !== transport.session.chainId) failBinding('subscription chainId does not match the pinned session')\n if (!hasMatchingHandshakeProfile(service, subscription, transport.session.chainId)) {\n failBinding('service and subscription profiles must match the pinned authorization chain')\n }\n const [keyHash, grantHash, serviceHash, subscriptionHash] = await Promise.all([\n objectHash(key), objectHash(grant), objectHash(service), objectHash(subscription),\n ])\n if (subscription.publisher !== grant.publisher) failBinding('subscription publisher does not match grant.publisher')\n if (subscription.service !== serviceHash) failBinding('subscription service does not match the supplied service')\n if (subscription.grant !== grantHash) failBinding('subscription grant does not match the supplied grant')\n if (subscription.encryptionKey !== keyHash || subscription.keyId !== key.keyId) {\n failBinding('subscription encryption key does not match the supplied descriptor')\n }\n if (service.preferredEncryptionKey !== keyHash || !service.encryptionKeys.includes(keyHash)) {\n failBinding('subscription must use the selected service preferred encryption key')\n }\n const source = await signerSource(transport)\n const subject = NormalizedAddressZod.parse(subscription.publisher)\n return await publishHandshakeObjects(\n transport,\n source,\n subject,\n [service, grant, subscription],\n [\n {\n kind: 'publisher-service',\n objectHash: serviceHash,\n revision: service.revision,\n schema: service.schema,\n serviceId: service.serviceId,\n },\n {\n deploymentId: grant.deploymentId,\n grantId: grant.grantId,\n kind: 'wake-grant',\n objectHash: grantHash,\n schema: grant.schema,\n },\n {\n kind: 'wake-subscription',\n objectHash: subscriptionHash,\n revision: subscription.revision,\n schema: subscription.schema,\n subscriptionId: subscription.subscriptionId,\n },\n ],\n )\n}\n\n/** Publishes publisher acceptance and retains the exact successful challenge/response bodies first. */\nexport async function publishWakeSubscriptionAcceptance(\n options: PublishWakeSubscriptionAcceptanceOptions,\n): Promise<HandshakePublicationResult> {\n const {\n acceptance: rawAcceptance, challenge: rawChallenge, response: rawResponse, ...transport\n } = options\n const acceptance = WakeSubscriptionAcceptanceZod.parse(rawAcceptance)\n const challenge = EndpointChallengeZod.parse(rawChallenge)\n const response = EndpointChallengeResponseZod.parse(rawResponse)\n const [acceptanceHash, challengeHash, responseHash] = await Promise.all([\n objectHash(acceptance), objectHash(challenge), objectHash(response),\n ])\n const source = await signerSource(transport)\n if (challenge.publisher !== source) failBinding('challenge publisher does not match the transaction signer')\n if (challenge.chainId !== transport.session.chainId) failBinding('challenge chainId does not match the pinned session')\n if (response.challenge !== challengeHash) failBinding('response does not reference the supplied challenge')\n if (acceptance.challenge !== challengeHash || acceptance.response !== responseHash) {\n failBinding('acceptance does not reference the supplied challenge and response')\n }\n if (acceptance.service !== challenge.service\n || acceptance.encryptionKey !== challenge.encryptionKey\n || acceptance.subscription !== challenge.subscription\n || acceptance.grant !== challenge.grant) {\n failBinding('acceptance tuple does not match the supplied challenge')\n }\n return await publishHandshakeObjects(\n transport,\n source,\n source,\n [acceptance],\n [{\n challenge: challengeHash,\n kind: 'wake-subscription-acceptance',\n objectHash: acceptanceHash,\n response: responseHash,\n schema: acceptance.schema,\n subscription: acceptance.subscription,\n }],\n [challenge, response],\n )\n}\n\nasync function publishRevocation(\n transport: HandshakePublicationOperationTransport,\n publisher: string,\n revocation: Payload,\n kind: Extract<PublishedHandshakeObjectIdentity, { readonly targetHash: string }>['kind'],\n targetHash: string,\n): Promise<HandshakePublicationResult> {\n const source = await signerSource(transport)\n const subject = NormalizedAddressZod.parse(publisher)\n const revocationHash = await objectHash(revocation)\n return await publishHandshakeObjects(\n transport,\n source,\n subject,\n [revocation],\n [{\n kind, objectHash: revocationHash, schema: String(revocation.schema), targetHash,\n }],\n )\n}\n\nexport async function publishPublisherServiceRevocation(\n options: PublishPublisherServiceRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const { revocation: rawRevocation, ...transport } = options\n const revocation = PublisherServiceRevocationZod.parse(rawRevocation)\n const publisher = await signerSource(transport)\n return await publishRevocation(transport, publisher, revocation, 'publisher-service-revocation', revocation.service)\n}\n\nexport async function publishPublisherEncryptionKeyRevocation(\n options: PublishPublisherEncryptionKeyRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const { revocation: rawRevocation, ...transport } = options\n const revocation = PublisherEncryptionKeyRevocationZod.parse(rawRevocation)\n const publisher = await signerSource(transport)\n return await publishRevocation(\n transport,\n publisher,\n revocation,\n 'publisher-encryption-key-revocation',\n revocation.key,\n )\n}\n\nexport async function publishWakeSubscriptionRevocation(\n options: PublishWakeSubscriptionRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const {\n publisher, revocation: rawRevocation, ...transport\n } = options\n const revocation = WakeSubscriptionRevocationZod.parse(rawRevocation)\n return await publishRevocation(\n transport,\n publisher,\n revocation,\n 'wake-subscription-revocation',\n revocation.subscription,\n )\n}\n\nexport async function publishWakeGrantRevocation(\n options: PublishWakeGrantRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const {\n publisher, revocation: rawRevocation, ...transport\n } = options\n const revocation = WakeGrantRevocationZod.parse(rawRevocation)\n return await publishRevocation(transport, publisher, revocation, 'wake-grant-revocation', revocation.grant)\n}\n\nexport async function publishWakeSubscriptionAcceptanceRevocation(\n options: PublishWakeSubscriptionAcceptanceRevocationOptions,\n): Promise<HandshakePublicationResult> {\n const { revocation: rawRevocation, ...transport } = options\n const revocation = WakeSubscriptionAcceptanceRevocationZod.parse(rawRevocation)\n const publisher = await signerSource(transport)\n return await publishRevocation(\n transport,\n publisher,\n revocation,\n 'wake-subscription-acceptance-revocation',\n revocation.acceptance,\n )\n}\n", "import { ChainIdZod } from '@xyo-network/event-kit-schemas'\nimport type { NetworkBootstrap } from '@xyo-network/xl1-sdk'\nimport {\n DefaultNetworks,\n MainNetwork,\n NetworkDataLakeUrls,\n SequenceNetwork,\n} from '@xyo-network/xl1-sdk'\n\nexport const EVENT_KIT_NETWORK_IDS = ['local', 'sequence', 'mainnet'] as const\nexport type EventKitNetworkId = typeof EVENT_KIT_NETWORK_IDS[number]\n\nexport interface EventKitChainIdViewer {\n chainId(): unknown\n}\n\nexport interface EventKitNetworkResolution {\n readonly dataLakeUrl: string\n /** Static SDK chain identity. Local chains acquire their identity from the connected viewer. */\n readonly expectedChainId?: string\n readonly network: EventKitNetworkId\n readonly rpcUrl: string\n}\n\nexport interface ResolveEventKitNetworkOptions {\n readonly dataLakeUrl?: string\n readonly network: EventKitNetworkId\n readonly rpcUrl?: string\n}\n\nexport interface PinEventKitNetworkSessionOptions {\n /** Required for callers reopening a previously pinned local session. */\n readonly expectedChainId?: string\n readonly resolution: EventKitNetworkResolution\n readonly viewer: EventKitChainIdViewer\n}\n\nexport interface EventKitNetworkSession extends EventKitNetworkResolution {\n /** The exact chain observed when this session was opened. */\n readonly chainId: string\n}\n\nfunction configuredNetwork(network: EventKitNetworkId): NetworkBootstrap {\n const found = DefaultNetworks.find(candidate => candidate.id === network)\n if (found === undefined) {\n throw new Error(`XL1 SDK does not define the Event Kit network ${network}`)\n }\n return found\n}\n\nfunction parseNetworkId(value: string): EventKitNetworkId {\n if ((EVENT_KIT_NETWORK_IDS as readonly string[]).includes(value)) return value as EventKitNetworkId\n throw new TypeError(`network must be one of ${EVENT_KIT_NETWORK_IDS.join('|')}`)\n}\n\nfunction endpoint(value: string, name: string): string {\n const trimmed = value.trim()\n let parsed: URL\n try {\n parsed = new URL(trimmed)\n } catch {\n throw new TypeError(`${name} must be an absolute HTTP(S) URL`)\n }\n if (!['http:', 'https:'].includes(parsed.protocol) || parsed.username !== '' || parsed.password !== '' || parsed.hash !== '') {\n throw new TypeError(`${name} must be an absolute HTTP(S) URL without userinfo or a fragment`)\n }\n return parsed.href\n}\n\nfunction defaultRpcUrl(network: NetworkBootstrap): string {\n return `${network.url.replace(/\\/$/u, '')}/rpc`\n}\n\nfunction sdkChainId(network: NetworkBootstrap): string | undefined {\n return network.chain === undefined ? undefined : ChainIdZod.parse(String(network.chain).toLowerCase())\n}\n\nfunction publicNetworkForChain(chainId: string): EventKitNetworkId | undefined {\n if (chainId === sdkChainId(MainNetwork)) return 'mainnet'\n return chainId === sdkChainId(SequenceNetwork) ? 'sequence' : undefined\n}\n\nfunction assertResolutionChain(resolution: EventKitNetworkResolution, chainId: string): void {\n const publicNetwork = publicNetworkForChain(chainId)\n if (publicNetwork !== undefined && publicNetwork !== resolution.network) {\n throw new Error(`Connected chain ${chainId} is ${publicNetwork}, not ${resolution.network}`)\n }\n if (resolution.expectedChainId !== undefined && resolution.expectedChainId !== chainId) {\n throw new Error(\n `Connected chain ID ${chainId} does not match ${resolution.network} chain ID ${resolution.expectedChainId}`,\n )\n }\n}\n\nasync function observedChainId(viewer: EventKitChainIdViewer): Promise<string> {\n return ChainIdZod.parse(String(await viewer.chainId()).toLowerCase())\n}\n\n/**\n * Resolves the supported name through the released XL1 SDK network table.\n * Overrides replace endpoints only; they never replace the SDK's public-chain identity.\n */\nexport function resolveEventKitNetwork(options: ResolveEventKitNetworkOptions): EventKitNetworkResolution {\n const networkId = parseNetworkId(options.network)\n const network = configuredNetwork(networkId)\n const defaultDataLake = NetworkDataLakeUrls[networkId]\n if (defaultDataLake === undefined) throw new Error(`XL1 SDK does not define a datalake for ${networkId}`)\n const expectedChainId = sdkChainId(network)\n return Object.freeze({\n dataLakeUrl: endpoint(options.dataLakeUrl ?? defaultDataLake, 'dataLakeUrl'),\n ...(expectedChainId === undefined ? {} : { expectedChainId }),\n network: networkId,\n rpcUrl: endpoint(options.rpcUrl ?? defaultRpcUrl(network), 'rpcUrl'),\n })\n}\n\n/** Opens a chain-pinned session after checking the live viewer against the selected SDK network. */\nexport async function pinEventKitNetworkSession(\n options: PinEventKitNetworkSessionOptions,\n): Promise<EventKitNetworkSession> {\n const chainId = await observedChainId(options.viewer)\n const requestedPin = options.expectedChainId === undefined\n ? undefined\n : ChainIdZod.parse(options.expectedChainId.toLowerCase())\n if (requestedPin !== undefined && requestedPin !== chainId) {\n throw new Error(`Connected chain ID ${chainId} does not match requested chain ID ${requestedPin}`)\n }\n assertResolutionChain(options.resolution, chainId)\n return Object.freeze({ ...options.resolution, chainId })\n}\n\n/** Rechecks the current transport against the immutable chain identity captured at session open. */\nexport async function assertEventKitNetworkSession(\n session: EventKitNetworkSession,\n viewer: EventKitChainIdViewer,\n): Promise<void> {\n const network = parseNetworkId(session.network)\n const chainId = ChainIdZod.parse(session.chainId.toLowerCase())\n assertResolutionChain({ ...session, network }, chainId)\n const observed = await observedChainId(viewer)\n if (observed !== chainId) {\n throw new Error(`Connected chain ID ${observed} does not match pinned chain ID ${chainId}`)\n }\n}\n\n/**\n * Enforces Phase 3 write policy. Mainnet is rejected without an acknowledgement escape hatch;\n * Phase 7 must introduce and qualify any future canary mechanism deliberately.\n */\nexport async function assertEventKitNetworkWrite(\n session: EventKitNetworkSession,\n viewer: EventKitChainIdViewer,\n): Promise<void> {\n if (session.network === 'mainnet' || session.chainId === sdkChainId(MainNetwork)) {\n throw new Error('Event Kit Mainnet writes are disabled until the Phase 7 canary interlock exists')\n }\n await assertEventKitNetworkSession(session, viewer)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["record", "sameStrings", "PublicationPhases", "sameValue", "sameIntent", "intentFromRecord", "record", "WakeSubscriptionAcceptanceZod", "PayloadBuilder", "PayloadBuilder", "WakeSubscriptionAcceptanceZod"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkSession.d.ts","sourceRoot":"","sources":["../../src/networkSession.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,2CAA4C,CAAA;AAC9E,MAAM,MAAM,iBAAiB,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAEpE,MAAM,WAAW,qBAAqB;IACpC,OAAO,IAAI,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,gGAAgG;IAChG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,gCAAgC;IAC/C,wEAAwE;IACxE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;CACvC;AAED,MAAM,WAAW,sBAAuB,SAAQ,yBAAyB;IACvE,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;
|
|
1
|
+
{"version":3,"file":"networkSession.d.ts","sourceRoot":"","sources":["../../src/networkSession.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,2CAA4C,CAAA;AAC9E,MAAM,MAAM,iBAAiB,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAEpE,MAAM,WAAW,qBAAqB;IACpC,OAAO,IAAI,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,gGAAgG;IAChG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,gCAAgC;IAC/C,wEAAwE;IACxE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;CACvC;AAED,MAAM,WAAW,sBAAuB,SAAQ,yBAAyB;IACvE,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AA0DD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,yBAAyB,CAYxG;AAED,oGAAoG;AACpG,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,sBAAsB,CAAC,CAUjC;AAED,oGAAoG;AACpG,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/event-kit-xl1",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "XL1 chain adapters for Event Kit (finalized head source)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -32,37 +32,37 @@
|
|
|
32
32
|
"README.md"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@xyo-network/event-kit-schemas": "~0.1
|
|
35
|
+
"@xyo-network/event-kit-schemas": "~1.0.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@ariestools/lib-neutral": "~
|
|
39
|
-
"@ariestools/sdk": "~
|
|
40
|
-
"@ariestools/toolchain": "~
|
|
41
|
-
"@ariestools/tsconfig": "~
|
|
38
|
+
"@ariestools/lib-neutral": "~10.0.8",
|
|
39
|
+
"@ariestools/sdk": "~9.0.1",
|
|
40
|
+
"@ariestools/toolchain": "~10.0.8",
|
|
41
|
+
"@ariestools/tsconfig": "~10.0.8",
|
|
42
42
|
"@opentelemetry/api": "~1.9.1",
|
|
43
|
-
"@xyo-network/sdk": "~
|
|
44
|
-
"@xyo-network/sdk-protocol": "~
|
|
45
|
-
"@xyo-network/xl1-sdk": "~5.
|
|
46
|
-
"@xyo-network/xl1-statement-graph-sdk": "~0.5.
|
|
43
|
+
"@xyo-network/sdk": "~8.0.1",
|
|
44
|
+
"@xyo-network/sdk-protocol": "~8.0.1",
|
|
45
|
+
"@xyo-network/xl1-sdk": "~5.8.0",
|
|
46
|
+
"@xyo-network/xl1-statement-graph-sdk": "~0.5.4",
|
|
47
47
|
"async-mutex": "~0.5.0",
|
|
48
|
-
"eslint": "~10.
|
|
48
|
+
"eslint": "~10.11.0",
|
|
49
49
|
"eslint-import-resolver-typescript": "~4.4.5",
|
|
50
50
|
"ethers": "~6.17.0",
|
|
51
51
|
"typescript": "~6.0.3",
|
|
52
|
-
"vite": "~8.
|
|
53
|
-
"vitest": "~
|
|
54
|
-
"zod": "~4.5
|
|
52
|
+
"vite": "~8.3.1",
|
|
53
|
+
"vitest": "~5.0.3",
|
|
54
|
+
"zod": "~4.6.5"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@ariestools/sdk": "^
|
|
57
|
+
"@ariestools/sdk": "^9.0",
|
|
58
58
|
"@opentelemetry/api": "^1.9",
|
|
59
|
-
"@xyo-network/sdk": "^
|
|
60
|
-
"@xyo-network/sdk-protocol": "^
|
|
61
|
-
"@xyo-network/xl1-sdk": "^5.
|
|
59
|
+
"@xyo-network/sdk": "^8.0",
|
|
60
|
+
"@xyo-network/sdk-protocol": "^8.0",
|
|
61
|
+
"@xyo-network/xl1-sdk": "^5.8",
|
|
62
62
|
"@xyo-network/xl1-statement-graph-sdk": "^0.5",
|
|
63
63
|
"async-mutex": "^0.5",
|
|
64
64
|
"ethers": "^6.17",
|
|
65
|
-
"zod": "^4.
|
|
65
|
+
"zod": "^4.6"
|
|
66
66
|
},
|
|
67
67
|
"engines": {
|
|
68
68
|
"node": ">=22"
|