/** * LocalConnector — passthrough to a local directory. * * Copies a source directory into the mount point, **unless** the host fleet * already owns the bind at that target. Every filesystem call here is async and * deadline-bounded: `ctx.mountTarget` for the workspace connector is the rclone * FUSE mount inside the agent container, and a synchronous call against a * wedged FUSE mount parks the whole event loop in an uninterruptible kernel * wait — a hang, not an error, so `try/catch` never fires (issue #454). */ import type { ConnectContext, ConnectorChangeEvent, ConnectorDeclaration, ConnectorHandle, FilesystemFace, WatchHandle, WatchOptions } from "@skaile/workspaces/connectors"; import { AbstractConnector } from "@skaile/workspaces/connectors"; /** * Filesystem-face connector for local filesystem directories — copies the source directory * into the mount target on connect and syncs on demand. * No external dependencies; ideal for development and local file access. * @docLink packages/factory-assets/concepts#local-connector */ export declare class LocalConnector extends AbstractConnector { readonly name = "local"; readonly filesystem: FilesystemFace; connect(declaration: ConnectorDeclaration, ctx: ConnectContext): Promise; disconnect(_handle: ConnectorHandle): Promise; private _sync; /** * Fail with the historical message when the source directory is missing, * while letting a wedged-mount deadline surface as itself. * * The old `existsSync` probe could not tell those apart — and on a hung * mount it never returned at all. */ private assertSourceExists; /** * Recursively copy `src` into `tgt`, skipping the copy when the two overlap. * * The string-overlap guard is a second line of defence behind the * fleet-managed refusal in `connect`: it is a *textual* comparison, so a * source that differs textually while overlapping physically (symlink, bind * mount, `..` segments already normalised away) still slips past it. It stays * because it is free and catches the common container layout. */ private copyTree; watch(handle: ConnectorHandle, callback: (event: ConnectorChangeEvent) => void, options?: WatchOptions): WatchHandle; } /** * Creates a new LocalConnector instance. * @returns Configured LocalConnector ready to be registered in the connector registry. * @docLink packages/factory-assets/api-reference#local-connector-factory */ export declare function createConnector(): LocalConnector; //# sourceMappingURL=driver.d.ts.map