/** * pi-bus deliver API — pure filesystem primitives for inter-pi messaging. * * Extracted from extensions/bus/index.ts so non-extension callers (cron * triggers, CLI scripts, other extensions) can drop messages into a session's * inbox without booting a full pi extension. * * What lives here: * - Path helpers (busRoot, sessionsRoot, ownSessionDir, inboxDir) * - Session meta + inbox message schemas * - Pure I/O: readMeta, listLiveSessions, findByName, writeInboxMessage, * readInbox, generateMsgId * * What stays in the extension: * - generateName (auto-generated friendly name; only used at session registration) * - writeMeta, updateHeartbeat (write your own meta; tied to closure scope) * - deliverIncoming, startInboxWatch, shutdown (tied to pi extension lifecycle) * * If you're writing a script that needs to drop a message into a session's * inbox, import from this file. Example: * * import { findByName, writeInboxMessage, generateMsgId } from "@shog-lab/pi-bus/lib/deliver"; * const found = findByName("alice"); * if (!("error" in found)) { * writeInboxMessage(found.id, { * id: generateMsgId(), * from: "cron", * body: "wake up", * sentAt: new Date().toISOString(), * }); * } */ import { type Static } from "@sinclair/typebox"; export declare const HEARTBEAT_INTERVAL_MS = 30000; export declare const STALE_AFTER_MS = 90000; export declare const MAX_BODY_BYTES = 16000; export declare const SessionMetaSchema: import("@sinclair/typebox").TObject<{ name: import("@sinclair/typebox").TString; pid: import("@sinclair/typebox").TNumber; cwd: import("@sinclair/typebox").TString; joinedAt: import("@sinclair/typebox").TString; heartbeatAt: import("@sinclair/typebox").TString; }>; export type SessionMeta = Static; export declare const InboxMessageSchema: import("@sinclair/typebox").TObject<{ id: import("@sinclair/typebox").TString; from: import("@sinclair/typebox").TString; body: import("@sinclair/typebox").TString; sentAt: import("@sinclair/typebox").TString; }>; export type InboxMessage = Static; export declare function busRoot(): string; export declare function sessionsRoot(): string; export declare function ownSessionDir(sessionId: string): string; export declare function inboxDir(sessionId: string): string; export declare function readMeta(sessionId: string): SessionMeta | null; /** List live sessions (stale-filtered). Excludes `excludeId` if given (yourself). */ export declare function listLiveSessions(excludeId?: string): SessionMeta[]; /** Look up a live session by name. Returns null if not found / stale / ambiguous. */ export declare function findByName(name: string, excludeId?: string): { id: string; meta: SessionMeta; } | { error: string; }; export declare function generateMsgId(): string; export declare function writeInboxMessage(targetSessionId: string, msg: InboxMessage): void; export declare function readInbox(sessionId: string, consume: boolean): InboxMessage[]; //# sourceMappingURL=deliver.d.ts.map