UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

55 lines (52 loc) • 2.7 kB
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= /** * The default system prompt: how the Mirage filesystem differs from a plain one. * * `buildSystemPrompt` starts from it; use it as the agent's instructions * when no mount description is needed. */ export const MIRAGE_SYSTEM_PROMPT = `Your filesystem is powered by Mirage — a virtual filesystem that mounts cloud storage, local files, and in-memory data as a unified file tree. Capabilities beyond standard filesystem: - head -n 5 on data files returns the first 5 rows - grep works on structured text such as CSV and JSON, not just plain text - Pipes work: cat data.csv | grep error | sort | uniq | wc -l - head, tail, cut, wc, sort, uniq, tee, xargs are all available - Start a recursive grep or rg inside the mount you mean, not at /: a mount searches with its own index only when the search starts inside it You can write Python code and execute it. The workspace is pre-configured with your data sources mounted at their respective paths. Use the shell tool for complex operations. Use read/write/edit for simple file operations. `; /** * Returns `MIRAGE_SYSTEM_PROMPT` followed by a description of the mounted * paths and any extra instructions, ready to use as an agent's system prompt. */ export async function buildSystemPrompt(opts = {}) { const parts = [MIRAGE_SYSTEM_PROMPT]; if (opts.workspace !== undefined) { parts.push('Mounted data sources:\n' + (await opts.workspace.vfsMd(undefined, { sessionId: opts.sessionId }))); } else if (opts.mountInfo !== undefined && Object.keys(opts.mountInfo).length > 0) { parts.push('\nMounted data sources:'); for (const [prefix, description] of Object.entries(opts.mountInfo)) { parts.push(`- ${prefix} — ${description}`); } parts.push(''); } if (opts.extraInstructions !== undefined && opts.extraInstructions.length > 0) { parts.push(opts.extraInstructions); } return parts.join('\n'); } //# sourceMappingURL=prompt.js.map