feat(knowledge): bind domain handoff to signer snapshot

This commit is contained in:
冰朔 2026-08-10 03:09:53 +08:00
commit 5054d4620f
4 changed files with 187 additions and 1 deletions

View file

@ -9,6 +9,7 @@ const REGISTRY_ID = 'GH-AIOS-TRUSTED-DOMAIN-MANIFEST-SIGNERS-001';
const REGISTRY_PATH = 'routing/trusted-domain-manifest-signers.json';
const COMMIT_PATTERN = /^[a-f0-9]{40}(?:[a-f0-9]{24})?$/;
const VERSION_PATTERN = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
const registeredLoadedSnapshots = new WeakSet<object>();
export interface TrustedSignerSnapshotTransport {
fetchJson(url: string): Promise<unknown>;
@ -98,7 +99,16 @@ function result(
registry: TrustedManifestSignerRegistry | null,
snapshotReceipt: Readonly<TrustedSignerSnapshotReceipt>,
): TrustedSignerSnapshotResult {
return Object.freeze({ registry, receipt: snapshotReceipt });
const loaded = Object.freeze({ registry, receipt: snapshotReceipt });
registeredLoadedSnapshots.add(loaded);
return loaded;
}
export function assertLoadedTrustedSignerSnapshot(
snapshot: TrustedSignerSnapshotResult,
): TrustedSignerSnapshotResult {
if (!registeredLoadedSnapshots.has(snapshot)) throw new Error('trusted_signer_snapshot_unregistered');
return snapshot;
}
export class TrustedSignerSnapshotLoader {