/** * Media-path scanner backing the agent's `detectAttachments` * (`lib/agents/agency-agent/lib/attachments.agency`). Pure string work — * no filesystem access — so the Agency side keeps only the stateful * stages (agent-cwd resolution, dedupe, stat, read). * * Lives in TS rather than Agency for speed: detection runs on EVERY user * message, and an Agency per-character loop pays the Runner step * machinery per iteration. This is one JS pass. * * Not a tarsec grammar on purpose: this is span-extraction from * arbitrary prose, not a structured parse. Quote handling needs boundary * + content guards (an apostrophe in "here's" must not open a quote; a * quoted span only counts when it is its own whitespace-delimited token * AND its content ends in a media extension), which is regex-with- * anchors territory — a combinator version would be a hand-rolled * backtracking scanner wearing tarsec types. */ export type MediaPathCandidate = { path: string; mime: string; }; /** extension (lowercase, with dot) -> MIME type. Media-only by design: * code/text paths stay with the agent's read tool. Exported as the * canonical media ext->MIME map (also used by reply attachments). */ export declare const MIME_TYPES: Record; /** Scan a user message for media-file mentions (drag-dropped quoted * paths, escaped-space paths, plain path tokens) and return them in * message order as `{ path, mime }` candidates. Purely lexical: paths * are NOT resolved or checked for existence here. */ export declare function _scanMediaPaths(msg: string): MediaPathCandidate[];