UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

101 lines • 4.89 kB
import type { JsonValue } from '../types.ts'; /** * A workspace's `network`: true for no limit, false for none at all, or the * hosts and ranges it may and may not reach and where a connection goes * instead, `{ allowed_domains: [...], denied_domains: [...], routes: {...} }`. * Mirrors Python's `NetworkSetting`. */ export type NetworkSetting = boolean | { readonly allowed_domains?: readonly string[]; readonly denied_domains?: readonly string[]; readonly routes?: Readonly<Record<string, string>>; }; /** * Whether a workspace may open one connection: its `network` setting, the * process's ceiling and the metadata block, each a layer mirage-rs compiles * once and every connection must clear. Throws when an entry is not an * address, a range or a host name. Mirrors Python's `NetworkRule`. */ export declare class NetworkRule { readonly layers: readonly Record<string, JsonValue>[]; readonly metadata: boolean; readonly routes: Readonly<Record<string, string>>; private readonly stream; private readonly targets; constructor(layers: readonly Record<string, JsonValue>[], metadata?: boolean, routes?: Readonly<Record<string, string>>); /** * Where a connection to `host` on `port` goes instead: the host and the * port its route names, null for none. */ route(host: string, port: number): readonly [string, number] | null; /** * Whether a connection to `address`, resolved for `host`, opens on `port`; * either name is empty and the port undefined when unknown. */ lets(host: string, address: string, port?: number): boolean; } /** * The layer a `network` setting adds: none for true or routes alone, one * that lets nothing for false, and its allowed and denied lists for an * object. Throws for anything else. Mirrors Python's `network_layer`. */ export declare function networkLayer(setting: unknown): Record<string, JsonValue> | null; /** * The routes a `network` setting names, `{ "host:port": "host:port" }`; * none for true or false. Mirrors Python's `network_routes`. */ export declare function networkRoutes(setting: NetworkSetting): Readonly<Record<string, string>>; /** * `base`'s routes with `over`'s in place of any naming the same end, as a * session's profile routes over its workspace's. Mirrors Python's * `merge_routes`. */ export declare function mergeRoutes(base: Readonly<Record<string, string>>, over: Readonly<Record<string, string>>): Record<string, string>; /** * `base` held also to `setting`: its layer added and its routes over the * base's; `base` itself when the setting adds neither. Mirrors Python's * `narrowed`, which also starts watching; a TypeScript host watches where * it binds the rule. */ export declare function narrowed(base: NetworkRule | null, setting: NetworkSetting): NetworkRule | null; /** * Whether two settings hold the same rule: their allowed and denied lists * name the same entries as written, in any order, `false` being an empty * allowed list and an empty denied list none at all, since it refuses * nothing, and their routes go from and to the same ends. An entry is * compared as written, since one spelling can be an address and another a * host name. */ export declare function sameNetwork(a: NetworkSetting, b: NetworkSetting): boolean; /** * The rule a workspace's connections are judged by: its `network`, with the * cloud metadata addresses refused when `metadata` is set; null when nothing * limits or routes it. Mirrors Python's `network_rule`. */ export declare function networkRule(setting?: NetworkSetting, metadata?: boolean): NetworkRule | null; /** * `fn` run under a workspace's network rule, which every connection it opens * must clear. Mirrors Python's `run_with_network`. */ export declare function runWithNetwork<T>(bound: NetworkRule | null, fn: () => Promise<T>): Promise<T>; /** * Whether the workspace a call runs for may open a connection to `address`, * resolved for `host`, on `port`. A browser cannot tell one task's binding * from another's, so there every live workspace's rule must let it. Mirrors * Python's `network_lets`. */ export declare function networkLets(host: string, address: string, port?: number): boolean; /** * Where the workspace a call runs for sends a connection to `host` on * `port` instead, null for nowhere else. A browser answers by the newest * live rule; its page hooks ask each live workspace. Mirrors Python's * `network_route`. */ export declare function networkRoute(host: string, port: number): readonly [string, number] | null; /** * The rule bound to the running call, null for none, which a watcher reads * to skip the rest and keys its pools by. A browser answers the newest live * one. Mirrors Python's `network_bound`. */ export declare function networkBound(): NetworkRule | null; //# sourceMappingURL=network.d.ts.map