cleaker
Version:
Who am I here.
132 lines • 4.45 kB
TypeScript
import type { ResolvePointerOptions } from './pointer';
import type { RemotePointerDefinition, ResolvePointerResult } from './pointer';
export interface OpenNodeInput {
namespace: string;
secret: string;
identityHash?: string;
space?: string;
headers?: Record<string, string>;
fetcher?: typeof fetch;
}
export interface OpenNodeResult {
status: 'verified';
namespace: string;
identityHash: string;
noise: string;
openedAt: number;
memoriesCount: number;
}
export interface MeKernel {
learn?: (memory: unknown) => void;
replayMemories?: (memories: unknown[]) => void;
noise?: string;
[key: string]: unknown;
}
export interface KernelPendingResolution {
status: 'pending';
path?: string;
pointer: RemotePointerDefinition;
promise: Promise<ResolvePointerResult>;
}
export interface CleakerNode extends MeKernel {
kernel: MeKernel;
ready: Promise<OpenNodeResult | null>;
claim(input: OpenNodeInput): Promise<OpenNodeResult>;
signIn(input: OpenNodeInput): Promise<OpenNodeResult>;
pointer(expression: string, options?: ResolvePointerOptions): RemotePointerDefinition;
state: CleakerState;
currentCycleId: number;
discoverHosts(): CleakerHostRecord[];
validateHosts(options?: ValidateHostsOptions): Promise<CleakerStatus>;
getStatus(): CleakerStatus;
waitUntilReady(timeoutMs?: number): Promise<CleakerReadyPayload>;
on<E extends keyof CleakerEvents>(eventName: E, handler: CleakerEvents[E]): () => void;
once<E extends keyof CleakerEvents>(eventName: E, handler: CleakerEvents[E]): () => void;
off<E extends keyof CleakerEvents>(eventName: E, handler: CleakerEvents[E]): void;
}
export type CleakerState = 'idle' | 'discovering' | 'probing' | 'opening' | 'hydrating' | 'ready' | 'degraded' | 'offline';
export type CleakerTransportState = 'up' | 'down' | 'unknown';
export type CleakerTriadState = 'verified' | 'unverified' | 'failed' | 'skipped';
export type CleakerOverallState = 'healthy' | 'degraded' | 'offline';
export interface CleakerHostRecord {
id: string;
alias?: string;
space: string;
namespace: string;
status: {
transport: CleakerTransportState;
triad: CleakerTriadState;
latencyMs: number;
lastSeen: number;
};
capabilities: {
canClaim: boolean;
canOpen: boolean;
canRelay: boolean;
};
error?: string;
}
export interface CleakerStatus {
cycleId: number;
state: CleakerState;
overall: CleakerOverallState;
activeNamespace: string;
totalHosts: number;
verifiedHosts: number;
hosts: CleakerHostRecord[];
}
export interface CleakerReadyPayload {
namespace: string;
cycleId: number;
sourceHostId: string;
sourceOrigin: string;
identityHash: string;
timestamp: number;
hydratedMemories: number;
summary: {
verifiedHosts: number;
totalHosts: number;
overall: 'healthy' | 'degraded';
};
}
export interface CleakerErrorPayload {
code: string;
message: string;
hostId?: string;
}
export interface ValidateHostsOptions {
triadStrategy?: 'first-success' | 'all';
timeoutMs?: number;
namespace?: string;
secret?: string;
identityHash?: string;
bootstrap?: string[];
}
/** Emitted when a remote surface fails and resolution is falling back to a local origin. */
export interface NamespaceFallbackPayload {
namespace: string;
failedOrigin: string;
failedReason: string;
fallbackOrigin: string;
}
/** Emitted when all surfaces have been tried and the namespace could not be resolved. */
export interface NamespaceFailedPayload {
namespace: string;
tried: Array<{
origin: string;
reason: string;
}>;
/** Human-readable summary of what was tried and why it failed. */
explain: string;
}
export interface CleakerEvents {
'status:change': (status: CleakerStatus) => void;
ready: (payload: CleakerReadyPayload) => void;
error: (error: CleakerErrorPayload) => void;
'host:triad:success': (hostId: string) => void;
/** A remote surface failed; resolution is retrying on a local fallback. */
'namespace:fallback': (payload: NamespaceFallbackPayload) => void;
/** All surfaces failed; namespace resolution is giving up. */
'namespace:failed': (payload: NamespaceFailedPayload) => void;
}
//# sourceMappingURL=kernel.d.ts.map