@struktoai/mirage-core
Version:
A Unified Virtual Filesystem For AI Agents
26 lines • 2.75 kB
TypeScript
import type { DiscordAccessor } from '../../accessor/discord.ts';
import { type ByteSource } from '../../io/types.ts';
import type { DirListing, FileStat, PathSpec } from '../../types.ts';
import { BaseVFS } from '../base.ts';
import type { Handed } from '../types.ts';
export declare const VFS_MD = "```text\n{prefix}\n <guild-name>__<guild-id>/\n channels/\n <channel-name>__<channel-id>/\n <yyyy-mm-dd>/\n chat.jsonl # messages for that date\n files/ # attachments shared that day\n <name>__<att-id>.<ext> # cat downloads it from Discord's CDN\n members/\n <username>__<user-id>.json # member profile\n```\n\n- A guild, channel, member or attachment name is `<display-name>__<id>`.\n The display name keeps Discord's spelling (spaces, apostrophes, emoji);\n only `/` becomes `\u2215` (U+2215). `ls` the parent first to find exact\n names, and quote a name that has spaces.\n- Messages are JSONL; use `jq` for fields such as `.content`,\n `.author.username` and `.attachments`. A day's `files/` may be empty.\n- Without `start_time`/`end_time`, a channel lists the latest 30 days up\n to its newest message; a date glob finds earlier days.\n- With `start_time`/`end_time`, listings cover that scope; messages and\n attachments outside it are absent, direct paths included. Users and\n channel metadata stay available as context.\n- `grep` and `rg` read the files they reach, so `grep` needs `-r` for a\n directory. Under a channel that reads every listed day, attachments\n included: they download from the CDN, and binary ones such as JPG or\n PDF produce noise.";
/**
* Discord's functions over its accessor, which the node and browser
* packages build over their own transport.
*/
export declare class DiscordVFS extends BaseVFS<DiscordAccessor> {
readonly readsRanges: boolean;
readonly handed: {
readonly readdir: readonly ["entry"];
readonly read: readonly ["entry", "parent"];
readonly follow: readonly ["entry", "parent"];
readonly readMany: readonly ["entry", "parent"];
readonly stat: readonly ["entry", "parent"];
};
readdir(path: PathSpec, handed?: Handed): Promise<FileStat[] | DirListing>;
read(path: PathSpec, handed?: Handed, offset?: number, size?: number | null, signal?: AbortSignal): Promise<ByteSource> | AsyncIterable<Uint8Array>;
readMany(paths: PathSpec[], limit: number, handed?: readonly Handed[]): Promise<Map<string, Uint8Array>>;
follow(path: PathSpec, n: number, interval: number, handed?: Handed): Promise<AsyncIterable<Uint8Array> | null>;
stat(path: PathSpec, handed?: Handed): Promise<FileStat>;
}
//# sourceMappingURL=discord.d.ts.map